<html><head>
<title>form验证</title>

<!--
Copyright(c) 1998-2006 WJJ Software
Website: http://www.wjjsoft.com
Email: support@wjjsoft.com
-->

<meta http-equiv="Content-Type" content="text/html;">
<meta name="GENERATOR" content="Mybase">

<style>
<!--
	.a1		{text-decoration: none; color: #ffffff;}
	.a1:visited	{text-decoration: none; color: #ffffff}
	.a1:hover	{text-decoration: underline; color: #ff0000} 

	.a2		{ text-decoration: none; color: #0099CC }
	.a2:visited	{ text-decoration: none; color: #800000 }
	.a2:hover	{text-decoration: underline; color: #ff0000} 
-->
</style>

<script LANGUAGE="JavaScript">
<!--
//-->
</script>

</head>

<body bgcolor="#ffffff" text="#000000" link="#3333cc" vlik="#000066">

<p align="left">
<font color="#2c89b1" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
<b>Database = H:\我的酷盘\我的酷盘\技术\myBase Desktop\myyule.nyf</b>
</font>
</p>

<div align="left">
<table border="0" width="100%" cellspacing="0" cellpadding="0">
  <tr>
    <td height="20" bgcolor="#FFFFFF">
      &nbsp;
    </td>
  </tr>
  <tr>
    <td bgcolor="#FFFFFF">
      <table border="0" width="100%" cellpadding="6">
	        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>form元素验证配置</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		如果需要兼容jquery 1.4-&nbsp;&nbsp;则将jquery.validationEngine.js的600行和644的“prop”修改成“attr”<br>
<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>基本验证</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateRange[equalsFiledId] 相同，在本插件里，专门用于密码和确认密码的一致性验证,equalsFiledId用于对比的表单元素的ID<br>
<br>
2、例如<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" name="userName" class="validate[equals[password]] " /&gt;<br>
<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 64-67）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"equals": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 请输入与上面相同的密码"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["equals"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["equals"]={<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;""regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 请输入与上面相同的密码"&nbsp;&nbsp;//可以修改成开发需要的文案&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
4、算法（源自jquery.validationEngine.js 755-760） <br>
_equals: function(field, rules, i, options) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var equalsField = rules[i + 1];<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (field.val() != $("#" + equalsField).val())<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return options.allrules.equals.alertText;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>required</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;required 必填填项验证，当被表单元素值不存在时提示，验证时机根据js配置确定<br>
<br>
2、例如：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" class="validate[required] " nam="userName" id="userName"/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 7-13）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "required": { // Add your regex rules here, you can take telephone as an example<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 此处不可空白",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertTextCheckboxMultiple": "* 请选择一个项目",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertTextCheckboxe": "* 您必须钩选此栏",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertTextDateRange": "* 日期范围不可空白"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["required"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["required"]={<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 此处不可空白",//text、password、textarea、file的为空时的提示<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertTextCheckboxMultiple": "* 请选择一个项目",//多个复选框（check）必选的提示文案<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertTextCheckboxe": "* 您必须钩选此栏",//单个复选框（check）必选的提示文案<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertTextDateRange": "* 日期范围不可空白"//js里暂未发现在哪里使用了此文案<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
4、算法（源自jquery.validationEngine.js 644-675）<br>
switch (field.prop("type")) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case "text":<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case "password":<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case "textarea":<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case "file":<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!field.val())//text、password、textarea、file 未填则提示用户此为必填<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return options.allrules[rules[i]].alertText;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case "radio":<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case "checkbox":<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var form = field.closest("form");<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var name = field.attr("name");<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (form.find("input[name='" + name + "']:checked").size() == 0) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (form.find("input[name='" + name + "']").size() == 1)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return options.allrules[rules[i]].alertTextCheckboxe;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return options.allrules[rules[i]].alertTextCheckboxMultiple;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// required for &lt;select&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case "select-one":<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// added by paul@kinetek.net for select boxes, Thank you<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!field.val())<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return options.allrules[rules[i]].alertText;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case "select-multiple":<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// added by paul@kinetek.net for select boxes, Thank you<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!field.find("option:selected").val())<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return options.allrules[rules[i]].alertText;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>groupRequired</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;groupRequired[payments]&nbsp;&nbsp;一组表单元素中，必须有一个表单元素需要填写,在指定表单下，class中有validate[groupRequired[payments]] 的表单元素组里，必须选择一项<br>
2、例如：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" class="validate[groupRequired[payments]] " nam="userName" id="payments1"/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" class="validate[groupRequired[payments]] " nam="userName" id="payments2"/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;select class="validate[groupRequired[payments]] text-input" type="text" name="bank2" id="bank2" &gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value=""&gt;Choose a payment option&lt;/option&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="Paypal"&gt;Paypal&lt;/option&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="Bank"&gt;Bank account&lt;/option&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/select&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 34-37）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "groupRequired": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 你必需选填其中一个栏位"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["groupRequired"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["groupRequired"]={<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 你必需选填其中一个栏位"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
4、算法（源自jquery.validationEngine.js 687-699）<br>
 _groupRequired: function(field, rules, i, options) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var classGroup = "[class*=" +rules[i + 1] +"]";<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var isValid = false;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Check all fields from the group<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;field.closest("form").find(classGroup).each(function(){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!methods._required($(this), rules, i, options)){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isValid = true;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!isValid) return options.allrules[rules[i]].alertText;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
（源自jquery.validationEngine.js 505-518）<br>
case "groupRequired":<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Check is its the first of group, if not, reload validation with first field<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// AND continue normal validation on present field<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var classGroup = "[class*=" +rules[i + 1] +"]";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var firstOfGroup = form.find(classGroup).eq(0);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(firstOfGroup[0] != field[0]){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methods._validateField(firstOfGroup, options, skipAjaxValidation)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.showArrow = true;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errorMsg = methods._groupRequired(field, rules, i, options);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(errorMsg) required = true;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.showArrow = false;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>minSize</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;minSize[n] 字符串的最小长度验证，当被表单元素值的长度小于minSize长度时提示，n表示最小长度，验证时机根据js配置确定<br>
2、例如<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" name="userName" class="validate[minSize[6]] " id="userName"/&gt;<br>
<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 24-28）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"minSize": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 最少 ",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText2": " 个字符"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["minSize"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["minSize"]={<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 最少 ",//文案提示前半部分<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText2": " 个字符"//文案提示后半部分<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
4、算法（源自jquery.validationEngine.js 790-798） <br>
_minSize: function(field, rules, i, options) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var min = rules[i + 1];<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var len = field.val().length;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (len &lt; min) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var rule = options.allrules.minSize;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return rule.alertText + min + rule.alertText2;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>maxSize</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxSize[n] 字符串的最大长度验证，当被表单元素值的长度大于maxSize长度时提示，n表示最大长度，验证时机根据js配置确定<br>
2、例如<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" name="userName" class="validate[maxSize[6]] " id="userName"/&gt;<br>
<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 29-33）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"maxSize": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 最多 ",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText2": " 个字符"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["maxSize"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["maxSize"]={<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "*&nbsp;&nbsp;最多 ",//文案提示前半部分<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText2": " 个字符"//文案提示后半部分<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
4、算法（源自jquery.validationEngine.js 771-779） <br>
_maxSize: function(field, rules, i, options) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var max = rules[i + 1];<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var len = field.val().length;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (len &gt; max) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var rule = options.allrules.maxSize;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return rule.alertText + max + rule.alertText2;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>min</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min[n] 最小值验证，当被表单元素值小于min时提示，n表示最小值，如果表单元素的值不可以被转换成数值类型，则在给出数值类型验证错误提示（Integer 验证）验证时机根据js配置确定<br>
2、例如<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" name="userName" class="validate[min[6]] " id="userName"/&gt;<br>
<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 38-41）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"min": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 最小值为 "<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["min"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["min"]={<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "alertText": "* 最小值为 "//最小值验证提示文案<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;("alertText2":"" //最小验证提示文案下半部分，可设置，可不设置，可以设置为单位，“字”、“字节”等，如果设置，上一行结尾需要添加“,”)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
4、算法（源自jquery.validationEngine.js 809-818） <br>
_min: function(field, rules, i, options) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var min = parseFloat(rules[i + 1]);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var len = parseFloat(field.val());<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (len &lt; min) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var rule = options.allrules.min;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (rule.alertText2) return rule.alertText + min + rule.alertText2;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return rule.alertText + min;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>max</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max[n]最小值验证，当被表单元素值大于max时提示，n表示最大值。如果表单元素的值不可以被转换成数值类型，则在给出数值类型验证错误提示（Integer 验证）验证时机根据js配置确定<br>
<br>
2、例如<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" name="userName" class="validate[max[6]] " id="userName"/&gt;<br>
<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 42-45）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "max": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 最大值为 "<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["max"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["max"]={<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "alertText": "* 最大值为 "//最大值验证提示文案<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;("alertText2":"" //最大值验证提示文案下半部分，可设置，可不设置，可以设置为单位，“字”、“字节”等，如果设置，上一行结尾需要添加“,”)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
4、算法（源自jquery.validationEngine.js 829-839） <br>
_max: function(field, rules, i, options) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var max = parseFloat(rules[i + 1]);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var len = parseFloat(field.val());<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (len &gt;max ) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var rule = options.allrules.max;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (rule.alertText2) return rule.alertText + max + rule.alertText2;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//orefalo: to review, also do the translations<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return rule.alertText + max;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>equals</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;equals[equalsFiledId] 相同，在本插件里，专门用于密码和确认密码的一致性验证,equalsFiledId用于对比的表单元素的ID<br>
<br>
2、例如<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" name="userName" class="validate[equals[password]] " id="userName"/&gt;<br>
<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 64-67）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"equals": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 请输入与上面相同的密码"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["equals"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["equals"]={<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 请输入与上面相同的密码"&nbsp;&nbsp;//可以修改成开发需要的文案&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
4、算法（源自jquery.validationEngine.js 755-760） <br>
_equals: function(field, rules, i, options) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var equalsField = rules[i + 1];<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (field.val() != $("#" + equalsField).val())<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return options.allrules.equals.alertText;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>dateRange</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateRange[grp1] 验证用户填写的日期范围是否是有效的日期范围，要求两个日期输入框的grp1（日期范围验证名）要一样，如果使用jquery-ui的datepicker（日期控件），可以生成有效的日期范围，无需验证<br>
2、例如<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input value="9/1/2009"&nbsp;&nbsp;class="validate[dateRange[grp1]]" type="text" id="date1" /&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input value="3/18/1985" class="validate[dateRange[grp1]]" type="text" id="date2" /&gt;<br>
<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 14-18）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"dateRange": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 无效的 ",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText2": " 日期范围"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["dateRange"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["dateRange"]={<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 无效的 ",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText2": " 日期范围"<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
4、算法（源自jquery.validationEngine.js 922-937） <br>
_dateRange: function (first, second, rules, i, options) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//are not both populated<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ((!first[0].value && second[0].value) || (first[0].value && !second[0].value)) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return options.allrules[rules[i]].alertText + options.allrules[rules[i]].alertText2;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//are not both dates<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!methods._isDate(first[0].value) || !methods._isDate(second[0].value)) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return options.allrules[rules[i]].alertText + options.allrules[rules[i]].alertText2;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//are both dates but range is off<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!methods._dateCompare(first[0].value, second[0].value)) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return options.allrules[rules[i]].alertText + options.allrules[rules[i]].alertText2;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>dateTimeRange</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateTimeRange[grp1] 验证用户填写的时间范围是否是有效的日期范围，要求两个时间输入框的grp1（日期范围验证名）要一样<br>
2、例如<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input value="9/1/2009 9:30:00 PM"&nbsp;&nbsp;class="validate[dateTimeRange[grp2]]" type="text" id="date1" /&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input value="9/1/2009 2:30:00 AM" class="validate[dateTimeRange[grp2]]" type="text" id="date2" /&gt;<br>
<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 19-23）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"dateTimeRange": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 无效的 ",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText2": " 时间范围"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["dateTimeRange"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["dateTimeRange"]={<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 无效的 ",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText2": "&nbsp;&nbsp;时间范围"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
4、算法（源自jquery.validationEngine.js 947-960） <br>
_dateTimeRange: function (first, second, rules, i, options) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//are not both populated<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ((!first[0].value && second[0].value) || (first[0].value && !second[0].value)) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return options.allrules[rules[i]].alertText + options.allrules[rules[i]].alertText2;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//are not both dates<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!methods._isDateTime(first[0].value) || !methods._isDateTime(second[0].value)) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return options.allrules[rules[i]].alertText + options.allrules[rules[i]].alertText2;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//are both dates but range is off<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!methods._dateCompare(first[0].value, second[0].value)) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return options.allrules[rules[i]].alertText + options.allrules[rules[i]].alertText2;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>past</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;past[date] 验证用户填写的日期是否是指定日期之前的日期，（先验证此表单元素里的值是否是正确的日期）如果日期是指定日期之前的日期，则通过，如果不是，则提示用户<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;date : 可以是 now,也可以是符合custom[date]验证规则的日期字符串<br>
2、例如：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" class="validate[custom[date],past[2010/01/01]] " nam="pastDate" id="pastDate"/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 46-49）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"past": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 日期必需早于 "<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["past"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["past"]={<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 日期必需早于 "<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
<br>
4、算法（源自jquery.validationEngine.js 850-861）<br>
_past: function(field, rules, i, options) {<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var p=rules[i + 1];<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var pdate = (p.toLowerCase() == "now")? new Date():methods._parseDate(p);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var vdate = methods._parseDate(field.val());<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (vdate &gt; pdate ) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var rule = options.allrules.past;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (rule.alertText2) return rule.alertText + methods._dateToString(pdate) + rule.alertText2;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return rule.alertText + methods._dateToString(pdate);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>future</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;future[date] 验证用户填写的日期是否是指定日期之后的日期，（先验证此表单元素里的值是否是正确的日期）如果日期是指定日期之后的日期，则通过，如果不是，则提示用户<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;date : 可以是 now,也可以是符合custom[date]验证规则的日期字符串<br>
<br>
2、例如：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" class="validate[custom[date],future[2010/01/01]] " nam="futureDate" id="futureDate"/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 50-53）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"future": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 日期必需晚于 "<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["future"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["future"]={<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 日期必需晚于 "<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
<br>
4、算法（源自jquery.validationEngine.js 872-883）<br>
_future: function(field, rules, i, options) {<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var p=rules[i + 1];<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var pdate = (p.toLowerCase() == "now")? new Date():methods._parseDate(p);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var vdate = methods._parseDate(field.val());<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (vdate &lt; pdate ) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var rule = options.allrules.future;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (rule.alertText2) return rule.alertText + methods._dateToString(pdate) + rule.alertText2;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return rule.alertText + methods._dateToString(pdate);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>minCheckbox</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;minCheckbox[n] 表单一组元素（Checkbox），至少选择n个，不满n，则验证不通过，提示用户<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n : 0&lt;n ,n小于等于被验证表单的("input[name='" + groupname + "']").size()<br>
2、例如：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;span&gt;Minimum 2 checkbox :&lt;br&gt;&lt;/span&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="checkbox" value="5" id="maxcheck1" name="group1" class="validate[minCheckbox[2]] checkbox"&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="checkbox" value="3" id="maxcheck2" name="group1" class="validate[minCheckbox[2]] checkbox"&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="checkbox" value="9" id="maxcheck3" name="group1" class="validate[minCheckbox[2]] checkbox"&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 59-63）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"minCheckbox": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 请选择 ",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText2": " 个项目"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["minCheckbox"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["minCheckbox"]={<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 请选择 ",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText2": " 个项目"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
<br>
4、算法（源自jquery.validationEngine.js 992-1001）<br>
_minCheckbox: function(form, field, rules, i, options) {<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var nbCheck = rules[i + 1];<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var groupname = field.attr("name");<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var groupSize = form.find("input[name='" + groupname + "']:checked").size();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (groupSize &lt; nbCheck) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.showArrow = false;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return options.allrules.minCheckbox.alertText + " " + nbCheck + " " + options.allrules.minCheckbox.alertText2;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>maxCheckbox</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxCheckbox[n] 表单一组元素（Checkbox），最多选择n个，超过n，则验证不通过，提示用户<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n : $("input[class*=minCheckbox[n]]").length<br>
2、例如：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;span&gt;Minimum 2 checkbox :&lt;br&gt;&lt;/span&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="checkbox" value="5" id="maxcheck1" name="group1" class="validate[maxCheckbox[2]] checkbox"&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="checkbox" value="3" id="maxcheck2" name="group1" class="validate[maxCheckbox[2]] checkbox"&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="checkbox" value="9" id="maxcheck3" name="group1" class="validate[maxCheckbox[2]] checkbox"&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 59-63）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"maxCheckbox": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 最多选取 ",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText2": " 个项目"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["maxCheckbox"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["maxCheckbox"]={<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 最多选取 ",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText2": " 个项目"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
<br>
4、算法（源自jquery.validationEngine.js 992-1001）<br>
 _maxCheckbox: function(form, field, rules, i, options) {<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var nbCheck = rules[i + 1];<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var groupname = field.attr("name");<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var groupSize = form.find("input[name='" + groupname + "']:checked").size();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (groupSize &gt; nbCheck) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.showArrow = false;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (options.allrules.maxCheckbox.alertText2) return options.allrules.maxCheckbox.alertText + " " + nbCheck + " " + options.allrules.maxCheckbox.alertText2;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return options.allrules.maxCheckbox.alertText;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>正则验证</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		关于验证这部分，可以通过修改文案配置的js的对应功能文案对象的regex数据的值来修改验证的正则验证规则<br>
<br>
<br>
<br>
正则验证的核心算法<br>
_customRegex: function(field, rules, i, options) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var customRule = rules[i + 1];<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var rule = options.allrules[customRule];<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!rule) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("jqv:custom rule not found "+customRule);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var ex=rule.regex;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!ex) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("jqv:custom regex not found "+customRule);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var pattern = new RegExp(ex);<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!pattern.test(field.val()))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return options.allrules[customRule].alertText;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>creditCard</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;creditCard 验证用户输入的内容是否符合信用卡号码，如果不符合，则不通过，否则通过<br>
2、例如：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input id="creditcard2" class="validate[required,creditCard] text-input" type="text" name="creditcard2" /&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 68-71）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"creditCard": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 无效的信用卡号码"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["creditCard"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["creditCard"]= {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": "none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 无效的信用卡号码"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
<br>
<br>
4、算法（源自jquery.validationEngine.js 1013-1032）<br>
&nbsp;&nbsp;_creditCard: function(field, rules, i, options) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//spaces and dashes may be valid characters, but must be stripped to calculate the checksum.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var valid = false, cardNumber = field.val().replace(/ +/g, '').replace(/-+/g, '');<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var numDigits = cardNumber.length;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (numDigits &gt;= 14 && numDigits &lt;= 16 && parseInt(cardNumber) &gt; 0) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var sum = 0, i = numDigits - 1, pos = 1, digit, luhn = new String();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;digit = parseInt(cardNumber.charAt(i));<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;luhn += (pos++ % 2 == 0) ? digit * 2 : digit;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} while (--i &gt;= 0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i = 0; i &lt; luhn.length; i++) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum += parseInt(luhn.charAt(i));<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;valid = sum % 10 == 0;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!valid) return options.allrules.creditCard.alertText;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>phone</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;phone 电话号码验证，<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Phone +103-304-340-4300-043<br>
+1 305 768 23 34 ext 23<br>
+1 (305) 768-2334 extension 703<br>
+1 (305) 768-2334 x703<br>
04312 / 777 777<br>
01-47.34/32 56<br>
(01865) 123456 <br>
<br>
2、例如：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" id="telephone" name="telephone" class="validate[required,custom[phone]] text-input" /&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 72-76）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"phone": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// credit: jquery.h5validate.js / orefalo<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 无效的电话号码"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["phone"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["phone"]={<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// credit: jquery.h5validate.js / orefalo<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 无效的电话号码"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
<br>
<br>
<br>
4、算法<br>
&nbsp;&nbsp;详见正则验证的核心算法
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>email</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;email 邮箱地址验证，<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
2、例如：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" id="email" name="email" class="validate[required,custom[email]] text-input" value="forced_error"&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 77-81）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"email": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Shamelessly lifted from Scott Gonzalez via the Bassistance Validation plugin &lt;http://projects.scottsplayground.com/email_address_validation/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 邮件地址无效"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["phone"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["phone"]={<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Shamelessly lifted from Scott Gonzalez via the Bassistance Validation plugin &lt;http://projects.scottsplayground.com/email_address_validation/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 邮件地址无效"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
4、算法&nbsp;&nbsp;详见正则验证的核心算法<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>integer</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer 整数验证<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex":/^[\-\+]?\d+$/<br>
2、例如：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" id="integer" name="integer" class="validate[required,custom[integer]] text-input" /&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 82-85）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"integer": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^[\-\+]?\d+$/,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 不是有效的整数"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["phone"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["phone"]={<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^[\-\+]?\d+$/,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 不是有效的整数"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
4、算法&nbsp;&nbsp;详见正则验证的核心算法<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>number</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number 数字验证<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex /^[\-\+]?(([0-9]+)([\.,]([0-9]+))?|([\.,]([0-9]+))?)$/<br>
2、例如：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" id="number" name="number" class="validate[required,custom[number]] text-input" /&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 86-90）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"number": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Number, including positive, negative, and floating decimal. credit: orefalo<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^[\-\+]?(([0-9]+)([\.,]([0-9]+))?|([\.,]([0-9]+))?)$/,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 无效的数字"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["number"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["number"]= {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Number, including positive, negative, and floating decimal. credit: orefalo<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^[\-\+]?(([0-9]+)([\.,]([0-9]+))?|([\.,]([0-9]+))?)$/,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 无效的数字"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
4、算法&nbsp;&nbsp;详见正则验证的核心算法<br>
<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>date</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;date 日期格式验证 ，格式必需为 YYYY-MM-DD,&nbsp;&nbsp;ISO 8601 dates only YYYY-mm-dd <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/<br>
2、例如：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" id="date" name="date" class="validate[required,custom[date]] text-input" /&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 82-85）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"date": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 无效的日期，格式必需为 YYYY-MM-DD"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["date"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["date"]= {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 无效的数字"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
4、算法&nbsp;&nbsp;详见正则验证的核心算法<br>
<br>
<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>ipv4</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ipv4 ipv4格式验证 ，格式如：127.0.0.1<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex":&nbsp;&nbsp;/^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/<br>
2、例如：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" id="ip" name="ip" class="validate[required,custom[ipv4]] text-input" /&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 95-98）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ipv4": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 无效的 IP 地址"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["ipv4"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["ipv4"]= {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 无效的 IP 地址"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
4、算法&nbsp;&nbsp;详见正则验证的核心算法<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>url</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url url格式验证 <br>
"regex":&nbsp;&nbsp;&nbsp;/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,<br>
2、例如：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" id="url" name="url" class="validate[required,custom[url]] text-input" value="http://"&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 99-102）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"url": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* Invalid URL"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["url"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["url"]= {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex":&nbsp;&nbsp;/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText":&nbsp;&nbsp;"* Invalid URL"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
4、算法&nbsp;&nbsp;详见正则验证的核心算法<br>
<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>onlyNumberSp</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onlyNumberSp 数字格式验证 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex":&nbsp;&nbsp;/^[0-9\ ]+$/<br>
2、例如：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" id="onlynumber" name="onlynumber" class="validate[required,custom[onlyNumberSp]] text-input" value="10.1"&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 103-106）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"onlyNumberSp": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^[0-9\ ]+$/,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 只能填数字"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["onlyNumberSp"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["onlyNumberSp"]= {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex":&nbsp;&nbsp;/^[0-9\ ]+$/,<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 只能填数字"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
4、算法&nbsp;&nbsp;详见正则验证的核心算法<br>
<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>onlyLetterSp</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onlyLetterSp 只接受英文字母大小写验证 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex":&nbsp;&nbsp;&nbsp;/^[a-zA-Z\ \']+$/<br>
2、例如：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" id="onlyascii" name="onlyascii" class="validate[required,custom[onlyLetterSp]] text-input" value="this is an invalid char '.'"&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 107-110）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"onlyLetterSp": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^[a-zA-Z\ \']+$/,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 只接受英文字母大小写"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["onlyLetterSp"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["onlyLetterSp"]= {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex":&nbsp;&nbsp;/^[a-zA-Z\ \']+$/,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 只接受英文字母大小写"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
4、算法&nbsp;&nbsp;详见正则验证的核心算法<br>
<br>
<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>onlyLetterNumber</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onlyLetterNumber 不接受特殊字符验证 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex":&nbsp;&nbsp;&nbsp;/^[0-9a-zA-Z]+$/<br>
2、例如：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" id="special" name="special" class="validate[required,custom[onlyLetterNumber]] text-input" value="too many spaces obviously"&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 107-110）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"onlyLetterNumber": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^[0-9a-zA-Z]+$/,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 不接受特殊字符"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["onlyLetterNumber"]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["onlyLetterNumber"]= {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex":&nbsp;&nbsp;&nbsp;/^[0-9a-zA-Z]+$/,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 不接受特殊字符"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
4、算法&nbsp;&nbsp;详见正则验证的核心算法<br>
<br>
<br>
<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>ajax验证</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		_ajax: function(field, rules, i, options) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var errorSelector = rules[i + 1];<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var rule = options.allrules[errorSelector];<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var extraData = rule.extraData;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var extraDataDynamic = rule.extraDataDynamic;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!extraData)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extraData = "";<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (extraDataDynamic) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var tmpData = [];<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var domIds = String(extraDataDynamic).split(",");<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (var i = 0; i &lt; domIds.length; i++) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var id = domIds[i];<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($(id).length) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var inputValue = field.closest("form").find(id).val();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var keyValue = id.replace('#', '') + '=' + escape(inputValue);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpData.push(keyValue);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extraDataDynamic = tmpData.join("&");<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extraDataDynamic = "";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!options.isError) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.ajax({<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type: "GET",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url: rule.url,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cache: false,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataType: "json",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data: "fieldId=" + field.attr("id") + "&fieldValue=" + field.val() + "&extraData=" + extraData + "&" + extraDataDynamic,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;field: field,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rule: rule,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methods: methods,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options: options,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;beforeSend: function() {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// build the loading prompt<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var loadingText = rule.alertTextLoad;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (loadingText)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methods._showPrompt(field, loadingText, "load", true, options);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error: function(data, transport) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methods._ajaxError(data, transport);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;success: function(json) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// asynchronously called on success, data is the json answer from the server<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var errorFieldId = json[0];<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var errorField = $($("#" + errorFieldId)[0]);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// make sure we found the element<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (errorField.length == 1) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var status = json[1];<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// read the optional msg from the server<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var msg = json[2];<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!status) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Houston we got a problem - display an red prompt<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.ajaxValidCache[errorFieldId] = false;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.isError = true;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// resolve the msg prompt<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(msg) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (options.allrules[msg]) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var txt = options.allrules[msg].alertText;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (txt)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = txt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = rule.alertText;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methods._showPrompt(errorField, msg, "", true, options);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (options.ajaxValidCache[errorFieldId] !== undefined)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.ajaxValidCache[errorFieldId] = true;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// resolves the msg prompt<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(msg) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (options.allrules[msg]) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var txt = options.allrules[msg].alertTextOk;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (txt)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = txt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = rule.alertTextOk;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// see if we should display a green prompt<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (msg)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methods._showPrompt(errorField, msg, "pass", true, options);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methods._closePrompt(errorField);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errorField.trigger("jqv.field.result", [errorField, !options.isError, msg]);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>ajaxUserCall</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		1、说明<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ajaxUserCall 用户唯一性名验证（异步验证）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URL：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data:fieldId(被验证的表单元素的ID)，fieldValue(验证的表单元素的表单的值)<br>
2、例如：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" id="firstname" name="firstname" class="validate[custom[onlyLetterSp],maxSize[100],ajax[ajaxNameCall]] text-input" value="olivier"&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
3、提示文案配置（源自jquery.validationEngine-zh_CN.js 116-122）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ajaxUserCall": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"url": "ajaxValidateFieldUser",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// you may want to pass extra data on the ajax call<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"extraData": "name=eric",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 此名称已被其他人使用",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertTextLoad": "* 正在确认名称是否有其他人使用，请稍等。"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["ajaxUserCall "]对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.validationEngineLanguage.allRules["ajaxUserCall "]=&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"url": "ajaxValidateFieldUser",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// you may want to pass extra data on the ajax call<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"extraData": "name=eric",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* 此名称已被其他人使用",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alertTextLoad": "* 正在确认名称是否有其他人使用，请稍等。"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
<br>
<br>
4、算法&nbsp;&nbsp;详见ajax验证的核心算法<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>js调用</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		依赖关系<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;页面如果需要使用此验证框架，页面需要引进<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jquery 1.4+<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jquery.validationEngine-en.js（验证框架国际化语言库js，简体中文 jquery.validationEngine-zh_CN.js ）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jquery.validationEngine.js&nbsp;&nbsp;&nbsp;验证框架核心js<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;validationEngine.jquery.css （验证框架的样式文件）<br>
<br>
注意事项<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1、表单元素如果需要加入验证，则此表单元素需要存在ID<br>
<br>
<br>
验证框架的使用js部分<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1、$("#formID1").validationEngine('attach');<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'attach'表示，在$("#formID1")促发submit或$("#formID1")的表单元素的blur时，触发对应的验证事件<br>
<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>attach</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Attaches jQuery.validationEngine to form.submit and field.blur events.<br>
$("#formID1").validationEngine('attach');<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'attach'表示，在$("#formID1")促发submit或$("#formID1")的表单元素的blur时，触发对应的验证事件<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>detach</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Unregisters any bindings that may point to jQuery.validaitonEngine.<br>
注销任何可能指向到jQuery.validaitonEngine绑定的事件<br>
<br>
$("#formID1").validationEngine('detach');<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>validate</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Validates the form and displays prompts accordingly. Returns true if the form validates, false if it contains errors. Note that if you use an ajax form validator, the actual result will be delivered asynchronously to the function options.onAjaxFormComplete.<br>
验证的形式和显示提示相应。返回true如果表单验证，假的，如果它包含错误。请注意，如果使用Ajax表单验证，实际结果将被交付异步功能options.onAjaxFormComplete的。<br>
<br>
alert( $("#formID1").validationEngine('validate') );<br>
d
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>validate one field</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Validates one field and displays the prompt accordingly. Returns false if the input validates, true if it contains errors.<br>
验证一个字段，并显示相应的提示。如果验证通过，返回假，如果它包含错误，返回真。<br>
<br>
alert( $("#formID1").validationEngine('validateField', "#emailInput") );<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>showPrompt</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		showPrompt (promptText, type, promptPosition, showArrow)<br>
<br>
Displays a prompt on a given element. Note that the prompt can be displayed on any element by providing an id.<br>
为一个给定的元素显示一个提示。请注意，任何元素提供一个id，可以显示提示。<br>
<br>
The method takes four parameters: 1. the text of the prompt itself 2. a type which defines the visual look of the prompt: 'pass' (green), 'load' (black) anything else (red) 3. an optional position: either "topLeft", "topRight", "bottomLeft", "centerRight", "bottomRight". Defaults to "topRight" 4. an optional boolean which indicates if the prompt should display a directional arrow<br>
该方法需要四个参数：1。文字提示2。类型定义提示的视觉外观：'通行证'（绿色），“负载”（黑）别的（红色）3。一个可选的位置是：无论是“左上”，“topRight”，“bottomLeft”，“centerRight的”，“bottomRight”。到默认“topRight”4。一个可选的布尔值，这表明如果提示应显示方向箭头<br>
<br>
&lt;fieldset&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;legend id="legendid"&gt;Email&lt;/legend&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;a href="#" onclick="$('#legendid').validationEngine('showPrompt', 'This a custom msg', 'load')"&gt;Show prompt&lt;/a&gt;<br>
&lt;/fieldset&gt;<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>hidePrompt</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		hidePrompt<br>
<br>
Closes the prompt linked to the input.<br>
关于指定表单元素的提示<br>
<br>
$('#inputID').validationEngine('hidePrompt');<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>hide</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		hide<br>
<br>
Closes error prompts in the current form (in case you have more than one form on the page).<br>
关闭指定表单的错误提示（如果页面上有多个被验证的表单）。<br>
<br>
$('#formID1').validationEngine('hide');<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>hideAll</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Closes all error prompts on the page.<br>
关于页面上所有的提示<br>
$('#formID1').validationEngine('hideAll');<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>updatePromptsPosition</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		updatePromptsPosition<br>
<br>
Update the form prompts positions.<br>
更新提示的位置。<br>
<br>
$("#formID").validationEngine("updatePromptsPosition")&nbsp;&nbsp;&nbsp;&nbsp;<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Options</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Options<br>
<br>
Options are typically passed to the init or attach action as a parameter.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;$("#formID1").validationEngine({promptPosition : "centerRight", scroll: false});<br>
&nbsp;&nbsp;&nbsp;&nbsp;$("#formID1").validationEngine('attach', {promptPosition : "centerRight", scroll: false});<br>
<br>
validationEventTrigger<br>
<br>
Name of the event triggering field validation, defaults to blur.<br>
scroll<br>
<br>
Determines if we should scroll the page to the first error, defaults to true.<br>
binded<br>
<br>
If set to false, it remove blur events and only validate on submit.<br>
promptPosition<br>
<br>
Where should the prompt show? Possible values are "topLeft", "topRight", "bottomLeft", "centerRight", "bottomRight". Defaults to "topRight". Default position adjustment could also be provided.<br>
ajaxFormValidation<br>
<br>
If set to true, turns Ajax form validation logic on. Defaults to false. Form validation takes place when the validate() action is called or when the form is submitted.<br>
ajaxFormValidationURL<br>
<br>
If set, the ajax submit validation will use this url instead of the form action<br>
onBeforeAjaxFormValidation(form, options)<br>
<br>
When ajaxFormValidation is turned on, this is the function that will be called before the asynchronous AJAX form validation call. May return false to stop the Ajax form validation<br>
onAjaxFormComplete: function(status, form, errors, options)<br>
<br>
When ajaxFormValidation is turned on, this function is used to asynchronously process the result of the validation. the status is a boolean. If true, the ajax call completed and all the server side form validations passed.<br>
relative<br>
<br>
Set to true when the form shows in a scrolling div, defaults to false, the error boxes are appended after the input instead of body<br>
onValidationComplete<br>
<br>
When defined, stops the the form from auto-submitting, and lets you handle the validation status via a function<br>
<br>
jQuery("#formID2").validationEngine('attach', {<br>
&nbsp;&nbsp;onValidationComplete: function(form, status){<br>
&nbsp;&nbsp;&nbsp;&nbsp;alert("The form status is: " +status+", it will never submit");<br>
&nbsp;&nbsp;}&nbsp;&nbsp;<br>
});<br>
<br>
onSuccess<br>
<br>
If set, this callback function will be called when all validations passed.<br>
onFailure<br>
<br>
If set, this callback function will be called when it found an error.<br>
autoPositionUpdate<br>
<br>
Auto update prompt position after window resize, disabled by default<br>
autoHidePrompt<br>
<br>
Determines if the prompt should hide itself automatically after a set period. Defaults to false.<br>
autoHideDelay<br>
<br>
Sets the number of ms that the prompt should appear for if autoHidePrompt is set to true. Defaults to 2000. 
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>validationEventTrigger</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		validationEventTrigger<br>
<br>
Name of the event triggering field validation, defaults to blur.<br>
事件触发字段验证的名称，默认为失去焦点
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>scroll</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		scroll<br>
<br>
Determines if we should scroll the page to the first error, defaults to true.<br>
决定，如果我们要滚动页面的第一个错误，默认为true。
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>binded</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		binded<br>
<br>
If set to false, it remove blur events and only validate on submit.<br>
如果设置为false，移除失去焦点事件，只上提交验证。
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>promptPosition</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		promptPosition<br>
<br>
Where should the prompt show? Possible values are "topLeft", "topRight", "bottomLeft", "centerRight", "bottomRight". Defaults to "topRight". Default position adjustment could also be provided.<br>
提示显示应该在哪里？可能的值是“topLeft”，“topRight”，“bottomLeft”，“centerRight”，“bottomRight的”。默认为“topRight”。也可提供的默认位置调整。
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>ajaxFormValidation</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		ajaxFormValidation<br>
<br>
If set to true, turns Ajax form validation logic on. Defaults to false. Form validation takes place when the validate() action is called or when the form is submitted.<br>
如果设置为true，原来Ajax表单验证逻辑。默认为false。表单验证的validate（）动作时，被称为或提交表单时发生。
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>ajaxFormValidationURL</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		ajaxFormValidationURL<br>
<br>
If set, the ajax submit validation will use this url instead of the form action<br>
如果设置，将使用AJAX提交验证这个URL，替换form的action属性里的URL
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>onBeforeAjaxFormValidation</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		onBeforeAjaxFormValidation(form, options)<br>
<br>
When ajaxFormValidation is turned on, this is the function that will be called before the asynchronous AJAX form validation call. May return false to stop the Ajax form validation
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>onAjaxFormComplete</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		onAjaxFormComplete: function(status, form, errors, options)<br>
<br>
When ajaxFormValidation is turned on, this function is used to asynchronously process the result of the validation. the status is a boolean. If true, the ajax call completed and all the server side form validations passed. <br>
<br>
打开ajaxFormValidation时，这个功能是用于异步处理验证的结果。状态是一个布尔值。如果情况属实，Ajax调用完成，并通过了所有的服务器端表单验证。
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>relative</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		relative<br>
<br>
Set to true when the form shows in a scrolling div, defaults to false, the error boxes are appended after the input instead of body<br>
时的形式显示在一个滚动的div设置为true，默认为false，错误框追加后的身体，而不是输入
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>onValidationComplete</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		onValidationComplete<br>
<br>
When defined, stops the the form from auto-submitting, and lets you handle the validation status via a function<br>
定义时，停止从自动提交的形式，让你处理功能通过验证状态<br>
<br>
jQuery("#formID2").validationEngine('attach', {<br>
&nbsp;&nbsp;onValidationComplete: function(form, status){<br>
&nbsp;&nbsp;&nbsp;&nbsp;alert("The form status is: " +status+", it will never submit");<br>
&nbsp;&nbsp;}&nbsp;&nbsp;<br>
});<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>onSuccess</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		onSuccess<br>
<br>
If set, this callback function will be called when all validations passed.<br>
如果设置，当所有验证通过时这个回调函数将被调用。
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>onFailure</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		onFailure<br>
<br>
If set, this callback function will be called when it found an error.<br>
如果设置，当有验证不通过时这个回调函数将被调用。
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>autoPositionUpdate</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		autoPositionUpdate<br>
<br>
Auto update prompt position after window resize, disabled by default<br>
默认情况下禁用自动更新提示窗口调整后的位置，
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>autoHidePrompt</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		autoHidePrompt<br>
<br>
Determines if the prompt should hide itself automatically after a set period. Defaults to false. <br>
如果是确定的提示，应自动隐藏自身后一定时间内。默认为false。
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>autoHideDelay</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		autoHideDelay<br>
<br>
Sets the number of ms that the prompt should appear for if autoHidePrompt is set to true. Defaults to 2000. <br>
设置的毫秒数，提示为，如果autoHidePrompt设置为true，应该会出现。默认到2000
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Customizations</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Customizations<br>
<br>
What would a good library be without customization?<br>
Adding regular expressions<br>
<br>
Adding new regular expressions is easy: open your translation file and add a new entry to the list<br>
<br>
"onlyLetter": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^[a-zA-Z\ \']+$/,<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* Letters only"<br>
},<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;"onlyLetter" is a sample selector name<br>
&nbsp;&nbsp;&nbsp;&nbsp;"regex" is a javascript regular expression<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertText" is the message to display when the validation fails<br>
<br>
You can now use the new regular expression as such<br>
<br>
&lt;input type="text" id="myid" name="myid" class="validation[custom[onlyLetter]]"/&gt;<br>
<br>
Don't forget to contribute!<br>
Customizing the look and feel<br>
<br>
Edit the file validationEngine.jquery.css and customize the stylesheet to your liking. it's trivial if you know CSS.<br>
Adding more locales<br>
<br>
You can easily add a locale by taking jquery.validationEngine-en.js as an example. Feel free to share the translation ;-)<br>
Changing defaults options globally<br>
<br>
You can, for example, disable the scrolling globally by using $.validationEngine.defaults.scroll = false.<br>
<br>
This need to be added before the initialization, one good way to handle this would be to add your settings in a file.<br>
<br>
&lt;script src="js/jquery.validationEngine-en.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;<br>
&lt;script src="js/jquery.validationEngine.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;<br>
&lt;script src="js/jquery.validationEngine-settings.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Adding regular expressions</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Adding regular expressions<br>
<br>
Adding new regular expressions is easy: open your translation file and add a new entry to the list<br>
<br>
"onlyLetter": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^[a-zA-Z\ \']+$/,<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* Letters only"<br>
},<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;"onlyLetter" is a sample selector name<br>
&nbsp;&nbsp;&nbsp;&nbsp;"regex" is a javascript regular expression<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertText" is the message to display when the validation fails<br>
<br>
You can now use the new regular expression as such<br>
<br>
&lt;input type="text" id="myid" name="myid" class="validation[custom[onlyLetter]]"/&gt;<br>
<br>
Don't forget to contribute!
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Customizing the look and feel</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Customizing the look and feel<br>
<br>
Edit the file validationEngine.jquery.css and customize the stylesheet to your liking. it's trivial if you know CSS.
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Adding more locales</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Adding more locales<br>
<br>
You can easily add a locale by taking jquery.validationEngine-en.js as an example. Feel free to share the translation ;-)
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Changing defaults options globally</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Changing defaults options globally<br>
<br>
You can, for example, disable the scrolling globally by using $.validationEngine.defaults.scroll = false.<br>
<br>
This need to be added before the initialization, one good way to handle this would be to add your settings in a file.<br>
<br>
&lt;script src="js/jquery.validationEngine-en.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;<br>
&lt;script src="js/jquery.validationEngine.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;<br>
&lt;script src="js/jquery.validationEngine-settings.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>杂</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		GitHub GitHub<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Signup and Pricing<br>
&nbsp;&nbsp;&nbsp;&nbsp;Explore GitHub<br>
&nbsp;&nbsp;&nbsp;&nbsp;Features<br>
&nbsp;&nbsp;&nbsp;&nbsp;Blog<br>
&nbsp;&nbsp;&nbsp;&nbsp;Login<br>
<br>
posabsolute / jQuery-Validation-Engine<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Watch<br>
&nbsp;&nbsp;&nbsp;&nbsp;Fork<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;613<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;157<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Code<br>
&nbsp;&nbsp;&nbsp;&nbsp;Network<br>
&nbsp;&nbsp;&nbsp;&nbsp;Pull Requests 0<br>
&nbsp;&nbsp;&nbsp;&nbsp;Issues 11<br>
&nbsp;&nbsp;&nbsp;&nbsp;Wiki 1<br>
&nbsp;&nbsp;&nbsp;&nbsp;Stats & Graphs<br>
<br>
jQuery form validation plugin - Read more<br>
<br>
&lt;http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;ZIP <br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;HTTP<br>
&nbsp;&nbsp;&nbsp;&nbsp;Git Read-Only<br>
<br>
Read-Only access<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Tags<br>
&nbsp;&nbsp;&nbsp;&nbsp;Downloads 6<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;branch: master<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Files<br>
&nbsp;&nbsp;&nbsp;&nbsp;Commits<br>
&nbsp;&nbsp;&nbsp;&nbsp;Branches 1<br>
<br>
Latest commit to the master branch<br>
<br>
fix #277<br>
commit b9fe2e94eb<br>
posabsolute authored 5 days ago<br>
jQuery-Validation-Engine /<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;age &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
history<br>
message<br>
directory &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.settings &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a year ago &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version 2.0 [posabsolute]<br>
directory &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;css &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16 days ago &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;added demo positioning, fixed pull request for chrome [posabsolute]<br>
directory &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;demos &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16 days ago &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fixed demo [posabsolute]<br>
directory &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;js &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5 days ago &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fix #277 [posabsolute]<br>
directory &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a year ago &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified flder structure, added php demos [posabsolute]<br>
file &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.classpath &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a year ago &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version 2.0 [posabsolute]<br>
file &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.gitignore &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a year ago &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version 2.0 [posabsolute]<br>
file &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.project &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a year ago &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version 2.0 [posabsolute]<br>
file &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;README.md &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a month ago &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Merge branch 'master' of github.com:posabsolute/jQuery-Validation-Engine [posabsolute]<br>
file &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TODO.txt &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a year ago &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version 2.0 [posabsolute]<br>
file &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index.html &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;21 days ago &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clean up positioning, with test/demo [sharkey3]<br>
file &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;runDemo.bat &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a year ago &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version 2.0 [posabsolute]<br>
file &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;runDemo.sh &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a year ago &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version 2.0 [posabsolute]<br>
README.md<br>
jQuery.validationEngine v2.5<br>
Summary<br>
<br>
jQuery validation engine is a Javascript plugin aimed at the validation of form fields in the browser (IE 6-8, Chrome, Firefox, Safari, Opera 10). The plugin provides visually appealing prompts that grab user attention on the subject matter.<br>
<br>
Validations range from email, phone, and URL, to more complex calls such as ajax processing or custom javascript functions. Bundled with many locales, the error prompts can be translated into the language of your choice.<br>
<br>
Forum Support: &lt;http://validationengine.vanillaforums.com/&gt;<br>
<br>
Screenshot<br>
<br>
Important: v2 is a significant rewrite of the original 1.7 branch. Please read the documentation as the API has changed!<br>
Demo :<br>
<br>
&lt;http://www.position-relative.net/creation/formValidator/&gt;<br>
Installation<br>
What's in the archive?<br>
<br>
The archive holds, of course, the core library along with translations in different languages. It also comes with a set of demo pages and a simple ajax server (built in Java).<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Unpack the archive<br>
&nbsp;&nbsp;&nbsp;&nbsp;Include the script jquery.validationEngine.closure.js in your page<br>
&nbsp;&nbsp;&nbsp;&nbsp;Pick the locale of the choice and include it in your page: jquery.validationEngine-XX.js<br>
&nbsp;&nbsp;&nbsp;&nbsp;Read this manual and understand the API<br>
<br>
Running the Demos<br>
<br>
Most demos are fully functional by simply opening their respective HTML file. However, the Ajax demos require the use of Java6 to launch a lightweight http server.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Run the script runDemo.bat (Windows) or runDemo.sh (Unix) from the folder<br>
&nbsp;&nbsp;&nbsp;&nbsp;Open a browser and point it at &lt;http://localhost:9173&gt;<br>
<br>
Usage<br>
References<br>
<br>
First include jQuery on your page<br>
<br>
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js" type="text/<br>
javascript"&gt;&lt;/script&gt;<br>
<br>
Include jquery.validationEngine and its locale<br>
<br>
&lt;script src="js/jquery.validationEngine-en.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;<br>
&lt;script src="js/jquery.validationEngine.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;<br>
<br>
Finally include the desired theme<br>
<br>
&lt;link rel="stylesheet" href="css/validationEngine.jquery.css" type="text/css"/&gt;<br>
<br>
Field Validations<br>
<br>
Validations are defined using the field's class attribute. Here are a few examples showing how it happens:<br>
<br>
&lt;input value="someone@nowhere.com" class="validate[required,custom[email]]" type="text" name="email" id="email" /&gt;<br>
&lt;input value="2010-12-01" class="validate[required,custom[date]]" type="text" name="date" id="date" /&gt;<br>
&lt;input value="too many spaces obviously" class="validate[required,custom[onlyLetterNumber]]" type="text" name="special" id="special" /&gt;<br>
<br>
For more details about validators, please refer to the section below.<br>
Experimental attribut data-validation-engine<br>
<br>
We are currently in the process of replaceing the class attribute by something more standard, it should normally work but consider this feature in beta.<br>
Per Field Prompt Direction<br>
<br>
Prompt direction can be define using the field's data attribute. Here are a few examples showing how it happens:<br>
<br>
&lt;input value="http://" class="validate[required,custom[url]] text-input" type="text" name="url" id="url" data-prompt-position="topLeft" /&gt;<br>
&lt;input value="" class="validate[required] text-input" type="text" name="req" id="req" data-prompt-position="bottomLeft" /&gt;<br>
&lt;input value="too many spaces obviously" class="validate[required,custom[onlyLetterNumber]]" type="text" name="special" id="special" data-prompt-position="bottomRight" /&gt;<br>
<br>
Prompt Position Adjustment<br>
<br>
Prompt position can be adjusted by providing shiftX and shiftY with position type in the field's data attribute. Prompt will be placed in (defaultX+shiftX),(defaultY+shiftY) position instead of default for selected position type. Here are a few examples showing how it happens:<br>
<br>
&lt;input value="http://" class="validate[required,custom[url]] text-input" type="text" name="url" id="url" data-prompt-position="topLeft:70" /&gt;<br>
&lt;input value="" class="validate[required] text-input" type="text" name="req" id="req" data-prompt-position="bottomLeft:20,5" /&gt;<br>
&lt;input value="too many spaces obviously" class="validate[required,custom[onlyLetterNumber]]" type="text" name="special" id="special" data-prompt-position="bottomRight:-100,3" /&gt;<br>
<br>
Instantiation<br>
<br>
The validator is typically instantiated with a call in the following format, the plugin can only be instanciated on form elements:<br>
<br>
$("#form.id").validationEngine();<br>
<br>
Without any parameters, the init() and attach() methods are automatically called.<br>
<br>
$("#form.id").validationEngine(action or options);<br>
<br>
The method may take one or several parameters, either an action (and parameters) or a list of options to customize the behavior of the engine.<br>
<br>
Here's a glimpse: say you have a form as such:<br>
<br>
&lt;form id="formID" method="post" action="submit.action"&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;input value="2010-12-01" class="validate[required,custom[date]]" type="text" name="date" id="date" /&gt;<br>
&lt;/form&gt;<br>
<br>
The code below will instantiate the validation engine and attach it to the form:<br>
<br>
&lt;script&gt;<br>
$(document).ready(function(){<br>
&nbsp;&nbsp;&nbsp;&nbsp;$("#formID").validationEngine();<br>
&nbsp;&nbsp;&nbsp;});<br>
&lt;/script&gt;<br>
<br>
When using options, the default behavior is to only initialize ValidationEngine, so attachment needs to be done manually.<br>
<br>
&lt;script&gt;<br>
$(document).ready(function(){<br>
&nbsp;&nbsp;&nbsp;&nbsp;$("#formID").validationEngine('attach', {promptPosition : "centerRight", scroll: false});<br>
&nbsp;&nbsp;&nbsp;});<br>
&lt;/script&gt;<br>
<br>
All calls to validationEngine() are chainable, so one can do the following:<br>
<br>
$("#formID").validationEngine().css({border : "2px solid #000"});<br>
<br>
Actions<br>
attach<br>
<br>
Attaches jQuery.validationEngine to form.submit and field.blur events.<br>
<br>
$("#formID1").validationEngine('attach');<br>
<br>
detach<br>
<br>
Unregisters any bindings that may point to jQuery.validaitonEngine.<br>
<br>
$("#formID1").validationEngine('detach');<br>
<br>
validate<br>
<br>
Validates the form and displays prompts accordingly. Returns true if the form validates, false if it contains errors. Note that if you use an ajax form validator, the actual result will be delivered asynchronously to the function options.onAjaxFormComplete.<br>
<br>
alert( $("#formID1").validationEngine('validate') );<br>
<br>
validate one field<br>
<br>
Validates one field and displays the prompt accordingly. Returns false if the input validates, true if it contains errors.<br>
<br>
alert( $("#formID1").validationEngine('validateField', "#emailInput") );<br>
<br>
showPrompt (promptText, type, promptPosition, showArrow)<br>
<br>
Displays a prompt on a given element. Note that the prompt can be displayed on any element by providing an id.<br>
<br>
The method takes four parameters: 1. the text of the prompt itself 2. a type which defines the visual look of the prompt: 'pass' (green), 'load' (black) anything else (red) 3. an optional position: either "topLeft", "topRight", "bottomLeft", "centerRight", "bottomRight". Defaults to "topRight" 4. an optional boolean which indicates if the prompt should display a directional arrow<br>
<br>
&lt;fieldset&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;legend id="legendid"&gt;Email&lt;/legend&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;a href="#" onclick="$('#legendid').validationEngine('showPrompt', 'This a custom msg', 'load')"&gt;Show prompt&lt;/a&gt;<br>
&lt;/fieldset&gt;<br>
<br>
hidePrompt<br>
<br>
Closes the prompt linked to the input.<br>
<br>
$('#inputID').validationEngine('hidePrompt');<br>
<br>
hide<br>
<br>
Closes error prompts in the current form (in case you have more than one form on the page).<br>
<br>
$('#formID1').validationEngine('hide');<br>
<br>
hideAll<br>
<br>
Closes all error prompts on the page.<br>
<br>
$('#formID1').validationEngine('hideAll');<br>
<br>
updatePromptsPosition<br>
<br>
Update the form prompts positions.<br>
<br>
$("#formID").validationEngine("updatePromptsPosition")&nbsp;&nbsp;&nbsp;&nbsp;<br>
<br>
Options<br>
<br>
Options are typically passed to the init or attach action as a parameter.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;$("#formID1").validationEngine({promptPosition : "centerRight", scroll: false});<br>
&nbsp;&nbsp;&nbsp;&nbsp;$("#formID1").validationEngine('attach', {promptPosition : "centerRight", scroll: false});<br>
<br>
validationEventTrigger<br>
<br>
Name of the event triggering field validation, defaults to blur.<br>
scroll<br>
<br>
Determines if we should scroll the page to the first error, defaults to true.<br>
binded<br>
<br>
If set to false, it remove blur events and only validate on submit.<br>
promptPosition<br>
<br>
Where should the prompt show? Possible values are "topLeft", "topRight", "bottomLeft", "centerRight", "bottomRight". Defaults to "topRight". Default position adjustment could also be provided.<br>
ajaxFormValidation<br>
<br>
If set to true, turns Ajax form validation logic on. Defaults to false. Form validation takes place when the validate() action is called or when the form is submitted.<br>
ajaxFormValidationURL<br>
<br>
If set, the ajax submit validation will use this url instead of the form action<br>
onBeforeAjaxFormValidation(form, options)<br>
<br>
When ajaxFormValidation is turned on, this is the function that will be called before the asynchronous AJAX form validation call. May return false to stop the Ajax form validation<br>
onAjaxFormComplete: function(status, form, errors, options)<br>
<br>
When ajaxFormValidation is turned on, this function is used to asynchronously process the result of the validation. the status is a boolean. If true, the ajax call completed and all the server side form validations passed.<br>
relative<br>
<br>
Set to true when the form shows in a scrolling div, defaults to false, the error boxes are appended after the input instead of body<br>
onValidationComplete<br>
<br>
When defined, stops the the form from auto-submitting, and lets you handle the validation status via a function<br>
<br>
jQuery("#formID2").validationEngine('attach', {<br>
&nbsp;&nbsp;onValidationComplete: function(form, status){<br>
&nbsp;&nbsp;&nbsp;&nbsp;alert("The form status is: " +status+", it will never submit");<br>
&nbsp;&nbsp;}&nbsp;&nbsp;<br>
});<br>
<br>
onSuccess<br>
<br>
If set, this callback function will be called when all validations passed.<br>
onFailure<br>
<br>
If set, this callback function will be called when it found an error.<br>
autoPositionUpdate<br>
<br>
Auto update prompt position after window resize, disabled by default<br>
autoHidePrompt<br>
<br>
Determines if the prompt should hide itself automatically after a set period. Defaults to false.<br>
autoHideDelay<br>
<br>
Sets the number of ms that the prompt should appear for if autoHidePrompt is set to true. Defaults to 2000.<br>
Validators<br>
<br>
Validators are encoded in the field's class attribute, as follows<br>
required<br>
<br>
Speaks for itself, fails if the element has no value. This validator can apply to pretty much any kind of input field.<br>
<br>
&lt;input value="" class="validate[required]" type="text" name="email" id="email" /&gt;<br>
&lt;input class="validate[required]" type="checkbox" id="agree" name="agree"/&gt;<br>
<br>
&lt;select name="sport" id="sport" class="validate[required]" id="sport"&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;option value=""&gt;Choose a sport&lt;/option&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;option value="option1"&gt;Tennis&lt;/option&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;option value="option2"&gt;Football&lt;/option&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;option value="option3"&gt;Golf&lt;/option&gt;<br>
&lt;/select&gt;<br>
<br>
groupRequired<br>
<br>
At least one of the field of the group must be filled. It needs to be given a group name that is unique across the form.<br>
<br>
&lt;input value="" class="validate[groupRequired[payments]]" type="text" name="creditcard" id="creditcard" /&gt;<br>
&lt;input class="validate[groupRequired[payments]]" type="text" id="paypal" name="paypal"/&gt;<br>
<br>
custom[regex_name]<br>
<br>
Validates the element's value to a predefined list of regular expressions.<br>
<br>
&lt;input value="someone@nowhere.com" class="validate[required,custom[email]]" type="text" name="email" id="email" /&gt;<br>
<br>
Please refer to the section Custom Regex for a list of available regular expressions.<br>
funcCall[methodName]<br>
<br>
Validates a field using a third party function call. If a validation error occurs, the function must return an error message that will automatically show in the error prompt.<br>
<br>
function checkHELLO(field, rules, i, options){<br>
&nbsp;&nbsp;if (field.val() != "HELLO") {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// this allows the use of i18 for the error msgs<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return options.allrules.validate2fields.alertText;<br>
&nbsp;&nbsp;}<br>
}<br>
<br>
The following declaration will do<br>
<br>
&lt;input value="" class="validate[required,funcCall[checkHELLO]]" type="text" id="lastname" name="lastname" /&gt;<br>
<br>
ajax[selector]<br>
<br>
Delegates the validation to a server URL using an asynchronous Ajax request. The selector is used to identify a block of properties in the translation file, take the following for example.<br>
<br>
&lt;input value="" class="validate[required,custom[onlyLetterNumber],maxSize[20],ajax[ajaxUserCall]] text-input" type="text" name="user" id="user" /&gt;<br>
<br>
"ajaxUserCall": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;"url": "ajaxValidateFieldUser",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"extraData": "name=eric",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"extraDataDynamic": ['#user_id', '#user_email'],<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* This user is already taken",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertTextOk": "All good!",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertTextLoad": "* Validating, please wait"<br>
},<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;url - is the remote restful service to call<br>
&nbsp;&nbsp;&nbsp;&nbsp;extraData - optional parameters to send<br>
&nbsp;&nbsp;&nbsp;&nbsp;extraDataDynamic - optional DOM id's that should have their values sent as parameters<br>
&nbsp;&nbsp;&nbsp;&nbsp;alertText - error prompt message if validation fails<br>
&nbsp;&nbsp;&nbsp;&nbsp;alertTextOk - optional prompt if validation succeeds (shows green)<br>
&nbsp;&nbsp;&nbsp;&nbsp;alertTextLoad - message displayed while the validation is being performed<br>
<br>
This validator is explained in further details in the Ajax section.<br>
equals[field.id]<br>
<br>
Checks if the current field's value equals the value of the specified field.<br>
min[float]<br>
<br>
Validates when the field's value is less than, or equal to, the given parameter.<br>
max[float]<br>
<br>
Validates when the field's value is more than, or equal to, the given parameter.<br>
minSize[integer]<br>
<br>
Validates if the element content size (in characters) is more than, or equal to, the given integer. integer &lt;= input.value.length<br>
maxSize[integer]<br>
<br>
Validates if the element content size (in characters) is less than, or equal to, the given integer. input.value.length &lt;= integer<br>
past[NOW or a date]<br>
<br>
Checks if the element's value (which is implicitly a date) is earlier than the given date. When "NOW" is used as a parameter, the date will be calculate in the browser. Note that this may be different from the server date. Dates use the ISO format YYYY-MM-DD<br>
<br>
&lt;input value="" class="validate[required,custom[date],past[now]]" type="text" id="birthdate" name="birthdate" /&gt;<br>
&lt;input value="" class="validate[required,custom[date],past[2010-01-01]]" type="text" id="appointment" name="appointment" /&gt;<br>
<br>
future[NOW or a date]<br>
<br>
Checks if the element's value (which is implicitly a date) is greater than the given date. When "NOW" is used as a parameter, the date will be calculate in the browser. Note that this may be different from the server date. Dates use the ISO format YYYY-MM-DD<br>
<br>
&lt;input value="" class="validate[required,custom[date],future[now]]" type="text" id="appointment" name="appointment" /&gt;<br>
// a date in 2009<br>
&lt;input value="" class="validate[required,custom[date],future[2009-01-01],past[2009-12-31]]" type="text" id="d1" name="d1" /&gt;<br>
<br>
minCheckbox[integer]<br>
<br>
Validates when a minimum of integer checkboxes are selected. The validator uses a special naming convention to identify the checkboxes as part of a group.<br>
<br>
The following example, enforces a minimum of two selected checkboxes<br>
<br>
&lt;input class="validate[minCheckbox[2]]" type="checkbox" name="group1" id="maxcheck1" value="5"/&gt;<br>
&lt;input class="validate[minCheckbox[2]]" type="checkbox" name="group1" id="maxcheck2" value="3"/&gt;<br>
&lt;input class="validate[minCheckbox[2]]" type="checkbox" name="group1" id="maxcheck3" value="9"/&gt;<br>
<br>
Note how the input.name is identical across the fields.<br>
maxCheckbox[integer]<br>
<br>
Same as above but limits the maximum number of selected check boxes.<br>
Selectors<br>
<br>
We've introduced the notion of selectors without giving many details about them: A selector is a string which is used as a key to match properties in the translation files. Take the following example:<br>
<br>
"onlyNumber": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^[0-9\ ]+$/,<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* Numbers only"<br>
},<br>
"ajaxUserCall": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;"url": "ajaxValidateFieldUser",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"extraData": "name=eric",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* This user is already taken",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertTextOk": " * User is valid",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertTextLoad": "* Validating, please wait"<br>
},<br>
"validate2fields": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* Please input HELLO"<br>
}<br>
<br>
onlyNumber, onlyLetter and validate2fields are all selectors. jQuery.validationEngine comes with a standard set but you are welcome to add you own to define AJAX backend services, error messages and/or new regular expressions.<br>
The ValidationEngine with a datepicker<br>
<br>
Using a datepicker with the engine is problematic because the validation is bound to the blur event. since we lose the focus before any data is entered in the field it creates a weird bug. Fortunately we implemented a fix that uses a delay during the datepicker binding.<br>
<br>
To use this mode you need to add the class datepicker to your input, like this:<br>
<br>
&lt;input type="text" id="req" name="req" class="validate[required] text-input datepicker" value=""&gt;<br>
<br>
Ajax Protocol<br>
<br>
The ajax validator takes a selector as an attribute. the selector points to a structure that defines the URL to call, the different messages to display and any extra parameters to add on the URL (when applicable). Please refer to the ajax[selector] description for more details.<br>
<br>
Ajax validation comes in two flavors:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Field Ajax validations, which take place when the user inputs a value in a field and moves away.<br>
&nbsp;&nbsp;&nbsp;&nbsp;Form Ajax validation, which takes place when the form is submitted or when the validate() action is called.<br>
<br>
Both options are optional.<br>
<br>
&lt;input value="" class="validate[required,ajax[ajaxUserCall]] text-input" type="text" name="user" id="user" /&gt;<br>
<br>
You can see a tutorial that makes the use of php here: &lt;http://www.position-absolute.com/articles/using-form-ajax-validation-with-the-jquery-validation-engine-plugin/&gt;<br>
Field ajax validation<br>
Protocol<br>
<br>
The client sends the fieldId and the fieldValue as a GET request to the server url.<br>
<br>
Client calls url?fieldId=id1&fieldValue=value1 ==&gt; Server<br>
<br>
Server responds with an array: [fieldid, status, errorMsg].<br>
<br>
Client receives &lt;== ["id1", boolean, errorMsg] Server<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;fieldid is the name (id) of the field<br>
&nbsp;&nbsp;&nbsp;&nbsp;status is the result of the validation, true if it passes, false if it fails<br>
&nbsp;&nbsp;&nbsp;&nbsp;errorMsg is an optional error string (or a selector) to the prompt text. If no error msg is returned, the prompt message is expected to be part of the rule with key "alertText" or "alertTextOk" (see the structure of the translation file)<br>
<br>
Form ajax validation<br>
Protocol<br>
<br>
The client sends the form fields and values as a GET request to the form.action url.<br>
<br>
Client calls url?fieldId=id1&fieldValue=value1&...etc ==&gt; Server (form.action)<br>
<br>
Server responds with an array of arrays: [fieldid, status, errorMsg].<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;fieldid is the name (id) of the field<br>
&nbsp;&nbsp;&nbsp;&nbsp;status is the result of the validation, true if it passes, false if it fails<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;errorMsg is an error string (or a selector) to the prompt text<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Client receives &lt;== [["id1", boolean,"errorMsg"],["id2", false, "there is an error "],["id3", true, "this field is good"]]<br>
<br>
Note that normally errors (status=false) are returned from the server. However you may also decide to return an entry with a status=true in which case the errorMsg will show as a green prompt.<br>
Validation URL<br>
<br>
By default the engine use the form action to validate the form, you can however set a default url using:<br>
<br>
**ajaxFormValidationURL<br>
Callbacks<br>
<br>
Since the form validation is asynchronously delegated to the form action, we provide two callback methods:<br>
<br>
onBeforeAjaxFormValidation(form, options) is called before the ajax form validation call, it may return false to stop the request<br>
<br>
onAjaxFormComplete: function(form, status, json_response_from_server, options) is called after the ajax form validation call<br>
Custom Regex<br>
<br>
jQuery.validationEngine comes with a lot of predefined expressions. Regex validation rules are specified as follows:<br>
<br>
&lt;input value="" class="validate[custom[email]]" type="text" name="email" id="email" /&gt;<br>
<br>
Note that the selector identifies a given regular expression in the translation file, but also its associated error prompt messages and optional green prompt message.<br>
phone<br>
<br>
a typical phone number with an optional country code and extension. Note that the validation is relaxed, please add extra validations for your specific country.<br>
<br>
49-4312 / 777 777<br>
+1 (305) 613-0958 x101<br>
(305) 613 09 58 ext 101<br>
3056130958<br>
+33 1 47 37 62 24 extension 3<br>
(016977) 1234<br>
04312 - 777 777<br>
91-12345-12345<br>
+58 295416 7216<br>
<br>
url<br>
<br>
Matches a URL such as &lt;http://myserver.com&gt;, &lt;https://www.crionics.com&gt; or &lt;ftp://myserver.ws&gt;<br>
email<br>
<br>
Easy, an email : username@hostname.com<br>
date<br>
<br>
An ISO date, YYYY-MM-DD<br>
number<br>
<br>
Floating points with an optional sign. ie. -143.22 or .77 but also +234,23<br>
integer<br>
<br>
Integers with an optional sign. ie. -635 +2201 738<br>
ipv4<br>
<br>
An IP address (v4) ie. 127.0.0.1<br>
onlyNumberSp<br>
<br>
Only numbers and spaces characters<br>
onlyLetterSp<br>
<br>
Only letters and space characters<br>
onlyLetterNumber<br>
<br>
Only letters and numbers, no space<br>
Relative<br>
<br>
Validation in overflown div and lightbox with scrollable content<br>
<br>
To get the supported mode you need to add these options when instantiating your plugin:<br>
<br>
$("#formID").validationEngine({<br>
&nbsp;&nbsp;relative: true,<br>
});<br>
<br>
The big change in this method is that normally the engine will append every error box to the body. In this case it will append every error box before the input validated. This adds a bit of complexity; if you want the error box to behave correctly you need to wrap the input in a div with relative position, and exactly wrap the input width and height. The easiest way to do that is by adding float:left, like in the example provided.<br>
<br>
The default top right position is currently the only supported position. Please use this mode only in overflown div and in scollable boxes, it is slower and a bit less stable, also there will be no scrolling, this is not supported in overflown boxes.<br>
<br>
You can also defined a scrollable container if needed :<br>
<br>
$("#formID").validationEngine({<br>
&nbsp;&nbsp;relative: true,<br>
&nbsp;&nbsp;overflownDIV:"#containerScrollable"<br>
});<br>
<br>
Hooks<br>
<br>
The plugin provides some hooks using jQuery bind functionality.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;jqv.form.validating : Trigger when the form is submitted and before it starts the validation process<br>
&nbsp;&nbsp;&nbsp;&nbsp;jqv.field.result(event, field, errorFound, prompText) : Triggers when a field is validated with the result.<br>
&nbsp;&nbsp;&nbsp;&nbsp;jqv.form.result(event, errorFound) : Triggers when a form is validated with the result<br>
<br>
An example of binding a custom function to these events would be:<br>
<br>
$("#formID").bind("jqv.form.result", function(event, errorFound) {<br>
&nbsp;&nbsp;if(errorFound)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("There is a problem with your form");<br>
});<br>
<br>
Customizations<br>
<br>
What would a good library be without customization?<br>
Adding regular expressions<br>
<br>
Adding new regular expressions is easy: open your translation file and add a new entry to the list<br>
<br>
"onlyLetter": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^[a-zA-Z\ \']+$/,<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* Letters only"<br>
},<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;"onlyLetter" is a sample selector name<br>
&nbsp;&nbsp;&nbsp;&nbsp;"regex" is a javascript regular expression<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertText" is the message to display when the validation fails<br>
<br>
You can now use the new regular expression as such<br>
<br>
&lt;input type="text" id="myid" name="myid" class="validation[custom[onlyLetter]]"/&gt;<br>
<br>
Don't forget to contribute!<br>
Customizing the look and feel<br>
<br>
Edit the file validationEngine.jquery.css and customize the stylesheet to your liking. it's trivial if you know CSS.<br>
Adding more locales<br>
<br>
You can easily add a locale by taking jquery.validationEngine-en.js as an example. Feel free to share the translation ;-)<br>
Changing defaults options globally<br>
<br>
You can, for example, disable the scrolling globally by using $.validationEngine.defaults.scroll = false.<br>
<br>
This need to be added before the initialization, one good way to handle this would be to add your settings in a file.<br>
<br>
&lt;script src="js/jquery.validationEngine-en.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;<br>
&lt;script src="js/jquery.validationEngine.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;<br>
&lt;script src="js/jquery.validationEngine-settings.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;<br>
<br>
Using the validationEngine with modal & dialog plugins<br>
<br>
You can have more information about implementing the engine with modal views here: [&lt;http://www.position-absolute.com/articles/using-the-jquery-validation-engine-with-modal-plugins/&gt;]<br>
Rules of thumb<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;field.id is unique across the page<br>
&nbsp;&nbsp;&nbsp;&nbsp;From 2.2.4 and up, jquery 1.6+ is required because of prop()<br>
&nbsp;&nbsp;&nbsp;&nbsp;for simplicity and consistency field.id and field.name should match (except with minCheckbox and maxCheckbox validators)<br>
&nbsp;&nbsp;&nbsp;&nbsp;spaces or special chars should be avoided in field.id or field.name<br>
&nbsp;&nbsp;&nbsp;&nbsp;use lower case for input.type ie. text, password, textarea, checkbox, radio<br>
&nbsp;&nbsp;&nbsp;&nbsp;validators are evaluated from left to right, use the Ajax validator last e.g. validate[custom[onlyLetter],length[0,100],ajax[ajaxNameCall]]<br>
&nbsp;&nbsp;&nbsp;&nbsp;please use only one Ajax validator per field!<br>
&nbsp;&nbsp;&nbsp;&nbsp;JSON services should live on the same server (or you will get into browser security issues)<br>
&nbsp;&nbsp;&nbsp;&nbsp;in a perfect RESTful world, http GET is used to READ data, http POST is used to WRITE data: which translates into -&gt; Ajax validations should use GET, the actual form post should use a POST request.<br>
<br>
Contribution<br>
<br>
Contributions are always welcome, please follow these steps to submit your changes:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Install git from &lt;http://git-scm.com/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;Create a github account on &lt;https://github.com&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;Set up your git ssh key using these instructions &lt;http://help.github.com/set-up-git-redirect&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;Open the jQuery Validation Engine project home page on github on &lt;https://github.com/posabsolute/jQuery-Validation-Engine&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;Click the "Fork" button, this will get you to a new page: your own copy of the code.<br>
&nbsp;&nbsp;&nbsp;&nbsp;Copy the SSH URL at the top of the page and clone the repository on your local machine<br>
<br>
git clone git@github.com:your-username/jQuery-Validation-Engine.git my-jqv-repo<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Create a branch and switch to it<br>
<br>
cd my-jqv-repo<br>
git branch mynewfeature-patch<br>
git checkout mynewfeature-patch<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Apply your changes, then commit using a meaningful comment, that's the comment everybody will see!<br>
<br>
git add .<br>
git commit -m "Fixing issue 157, blablabla"<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Push the changes back to github (under a different branch, here myfeature-patch)<br>
<br>
git push origin mynewfeature-patch<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Open your forked repository on github at &lt;https://github.com/your-username/jQuery-Validation-Engine&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;Click "Switch Branches" and select your branch (mynewfeature-patch)<br>
&nbsp;&nbsp;&nbsp;&nbsp;Click "Pull Request"<br>
&nbsp;&nbsp;&nbsp;&nbsp;Submit your pull request to JQV Developers<br>
<br>
Support<br>
<br>
We offer limited support at &lt;http://validationengine.vanillaforums.com/&gt;<br>
License<br>
<br>
Licensed under the MIT License<br>
Authors<br>
<br>
Copyright(c) 2011 Cedric Dugas &lt;http://www.position-absolute.com&gt;<br>
<br>
v2.0 Rewrite by Olivier Refalo &lt;http://www.crionics.com&gt;<br>
<br>
<br>
GitHub Links<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;GitHub<br>
&nbsp;&nbsp;&nbsp;&nbsp;About<br>
&nbsp;&nbsp;&nbsp;&nbsp;Blog<br>
&nbsp;&nbsp;&nbsp;&nbsp;Features<br>
&nbsp;&nbsp;&nbsp;&nbsp;Contact & Support<br>
&nbsp;&nbsp;&nbsp;&nbsp;Training<br>
&nbsp;&nbsp;&nbsp;&nbsp;GitHub Enterprise<br>
&nbsp;&nbsp;&nbsp;&nbsp;Site Status<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Tools<br>
&nbsp;&nbsp;&nbsp;&nbsp;Gauges: Analyze web traffic<br>
&nbsp;&nbsp;&nbsp;&nbsp;Speaker Deck: Presentations<br>
&nbsp;&nbsp;&nbsp;&nbsp;Gist: Code snippets<br>
&nbsp;&nbsp;&nbsp;&nbsp;GitHub for Mac<br>
&nbsp;&nbsp;&nbsp;&nbsp;Issues for iPhone<br>
&nbsp;&nbsp;&nbsp;&nbsp;Job Board<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Extras<br>
&nbsp;&nbsp;&nbsp;&nbsp;GitHub Shop<br>
&nbsp;&nbsp;&nbsp;&nbsp;The Octodex<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Documentation<br>
&nbsp;&nbsp;&nbsp;&nbsp;GitHub Help<br>
&nbsp;&nbsp;&nbsp;&nbsp;Developer API<br>
&nbsp;&nbsp;&nbsp;&nbsp;GitHub Flavored Markdown<br>
&nbsp;&nbsp;&nbsp;&nbsp;GitHub Pages<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Terms of Service<br>
&nbsp;&nbsp;&nbsp;&nbsp;Privacy<br>
&nbsp;&nbsp;&nbsp;&nbsp;Security<br>
<br>
? 2012 GitHub Inc. All rights reserved.<br>
Dedicated Server Powered by the Dedicated Servers and<br>
Cloud Computing of Rackspace Hosting?<br>
<br>
Something went wrong with that request. Please try again. Dismiss<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>References</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		First include jQuery on your page<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js" type="text/javascript"&gt;&lt;/script&gt;<br>
<br>
<br>
<br>
<br>
Include jquery.validationEngine and its locale<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;script src="js/jquery.validationEngine-en.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;script src="js/jquery.validationEngine.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;<br>
<br>
<br>
<br>
<br>
<br>
Finally include the desired theme<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;link rel="stylesheet" href="css/validationEngine.jquery.css" type="text/css"/&gt;<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Field Validations</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Validations are defined using the field's class attribute. Here are a few examples showing how it happens:<br>
<br>
&lt;input value="someone@nowhere.com" class="validate[required,custom[email]]" type="text" name="email" id="email" /&gt;<br>
&lt;input value="2010-12-01" class="validate[required,custom[date]]" type="text" name="date" id="date" /&gt;<br>
&lt;input value="too many spaces obviously" class="validate[required,custom[onlyLetterNumber]]" type="text" name="special" id="special" /&gt;<br>
<br>
For more details about validators, please refer to the section below.<br>
<br>
<br>
<br>
Experimental attribut data-validation-engine<br>
<br>
We are currently in the process of replaceing the class attribute by something more standard, it should normally work but consider this feature in beta. 
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Per Field Prompt Direction</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Prompt direction can be define using the field's data attribute. Here are a few examples showing how it happens:<br>
<br>
&lt;input value="http://" class="validate[required,custom[url]] text-input" type="text" name="url" id="url" data-prompt-position="topLeft" /&gt;<br>
&lt;input value="" class="validate[required] text-input" type="text" name="req" id="req" data-prompt-position="bottomLeft" /&gt;<br>
&lt;input value="too many spaces obviously" class="validate[required,custom[onlyLetterNumber]]" type="text" name="special" id="special" data-prompt-position="bottomRight" /&gt;
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Prompt Position Adjustment</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Prompt position can be adjusted by providing shiftX and shiftY with position type in the field's data attribute. Prompt will be placed in (defaultX+shiftX),(defaultY+shiftY) position instead of default for selected position type. Here are a few examples showing how it happens:<br>
<br>
&lt;input value="http://" class="validate[required,custom[url]] text-input" type="text" name="url" id="url" data-prompt-position="topLeft:70" /&gt;<br>
&lt;input value="" class="validate[required] text-input" type="text" name="req" id="req" data-prompt-position="bottomLeft:20,5" /&gt;<br>
&lt;input value="too many spaces obviously" class="validate[required,custom[onlyLetterNumber]]" type="text" name="special" id="special" data-prompt-position="bottomRight:-100,3" /&gt;
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Instantiation</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		The validator is typically instantiated with a call in the following format, the plugin can only be instanciated on form elements:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$("#form.id").validationEngine();<br>
<br>
Without any parameters, the init() and attach() methods are automatically called.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$("#form.id").validationEngine(action or options);<br>
<br>
The method may take one or several parameters, either an action (and parameters) or a list of options to customize the behavior of the engine.<br>
<br>
Here's a glimpse: say you have a form as such:<br>
<br>
&lt;form id="formID" method="post" action="submit.action"&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;input value="2010-12-01" class="validate[required,custom[date]]" type="text" name="date" id="date" /&gt;<br>
&lt;/form&gt;<br>
<br>
<br>
he code below will instantiate the validation engine and attach it to the form:<br>
<br>
&lt;script&gt;<br>
$(document).ready(function(){<br>
&nbsp;&nbsp;&nbsp;&nbsp;$("#formID").validationEngine();<br>
&nbsp;&nbsp;&nbsp;});<br>
&lt;/script&gt;<br>
<br>
When using options, the default behavior is to only initialize ValidationEngine, so attachment needs to be done manually.<br>
<br>
&lt;script&gt;<br>
$(document).ready(function(){<br>
&nbsp;&nbsp;&nbsp;&nbsp;$("#formID").validationEngine('attach', {promptPosition : "centerRight", scroll: false});<br>
&nbsp;&nbsp;&nbsp;});<br>
&lt;/script&gt;<br>
<br>
All calls to validationEngine() are chainable, so one can do the following:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$("#formID").validationEngine().css({border : "2px solid #000"});<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Actions</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		attach<br>
<br>
Attaches jQuery.validationEngine to form.submit and field.blur events.<br>
<br>
$("#formID1").validationEngine('attach');<br>
<br>
detach<br>
<br>
Unregisters any bindings that may point to jQuery.validaitonEngine.<br>
<br>
$("#formID1").validationEngine('detach');<br>
<br>
validate<br>
<br>
Validates the form and displays prompts accordingly. Returns true if the form validates, false if it contains errors. Note that if you use an ajax form validator, the actual result will be delivered asynchronously to the function options.onAjaxFormComplete.<br>
<br>
alert( $("#formID1").validationEngine('validate') );<br>
<br>
validate one field<br>
<br>
Validates one field and displays the prompt accordingly. Returns false if the input validates, true if it contains errors.<br>
<br>
alert( $("#formID1").validationEngine('validateField', "#emailInput") );<br>
<br>
showPrompt (promptText, type, promptPosition, showArrow)<br>
<br>
Displays a prompt on a given element. Note that the prompt can be displayed on any element by providing an id.<br>
<br>
The method takes four parameters: 1. the text of the prompt itself 2. a type which defines the visual look of the prompt: 'pass' (green), 'load' (black) anything else (red) 3. an optional position: either "topLeft", "topRight", "bottomLeft", "centerRight", "bottomRight". Defaults to "topRight" 4. an optional boolean which indicates if the prompt should display a directional arrow<br>
<br>
&lt;fieldset&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;legend id="legendid"&gt;Email&lt;/legend&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;a href="#" onclick="$('#legendid').validationEngine('showPrompt', 'This a custom msg', 'load')"&gt;Show prompt&lt;/a&gt;<br>
&lt;/fieldset&gt;<br>
<br>
hidePrompt<br>
<br>
Closes the prompt linked to the input.<br>
<br>
$('#inputID').validationEngine('hidePrompt');<br>
<br>
hide<br>
<br>
Closes error prompts in the current form (in case you have more than one form on the page).<br>
<br>
$('#formID1').validationEngine('hide');<br>
<br>
hideAll<br>
<br>
Closes all error prompts on the page.<br>
<br>
$('#formID1').validationEngine('hideAll');<br>
<br>
updatePromptsPosition<br>
<br>
Update the form prompts positions.<br>
<br>
$("#formID").validationEngine("updatePromptsPosition")&nbsp;&nbsp;&nbsp;&nbsp;<br>
<br>
Options<br>
<br>
Options are typically passed to the init or attach action as a parameter.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;$("#formID1").validationEngine({promptPosition : "centerRight", scroll: false});<br>
&nbsp;&nbsp;&nbsp;&nbsp;$("#formID1").validationEngine('attach', {promptPosition : "centerRight", scroll: false});<br>
<br>
validationEventTrigger<br>
<br>
Name of the event triggering field validation, defaults to blur.<br>
scroll<br>
<br>
Determines if we should scroll the page to the first error, defaults to true.<br>
binded<br>
<br>
If set to false, it remove blur events and only validate on submit.<br>
promptPosition<br>
<br>
Where should the prompt show? Possible values are "topLeft", "topRight", "bottomLeft", "centerRight", "bottomRight". Defaults to "topRight". Default position adjustment could also be provided.<br>
ajaxFormValidation<br>
<br>
If set to true, turns Ajax form validation logic on. Defaults to false. Form validation takes place when the validate() action is called or when the form is submitted.<br>
ajaxFormValidationURL<br>
<br>
If set, the ajax submit validation will use this url instead of the form action<br>
onBeforeAjaxFormValidation(form, options)<br>
<br>
When ajaxFormValidation is turned on, this is the function that will be called before the asynchronous AJAX form validation call. May return false to stop the Ajax form validation<br>
onAjaxFormComplete: function(status, form, errors, options)<br>
<br>
When ajaxFormValidation is turned on, this function is used to asynchronously process the result of the validation. the status is a boolean. If true, the ajax call completed and all the server side form validations passed.<br>
relative<br>
<br>
Set to true when the form shows in a scrolling div, defaults to false, the error boxes are appended after the input instead of body<br>
onValidationComplete<br>
<br>
When defined, stops the the form from auto-submitting, and lets you handle the validation status via a function<br>
<br>
jQuery("#formID2").validationEngine('attach', {<br>
&nbsp;&nbsp;onValidationComplete: function(form, status){<br>
&nbsp;&nbsp;&nbsp;&nbsp;alert("The form status is: " +status+", it will never submit");<br>
&nbsp;&nbsp;}&nbsp;&nbsp;<br>
});<br>
<br>
onSuccess<br>
<br>
If set, this callback function will be called when all validations passed.<br>
onFailure<br>
<br>
If set, this callback function will be called when it found an error.<br>
autoPositionUpdate<br>
<br>
Auto update prompt position after window resize, disabled by default<br>
autoHidePrompt<br>
<br>
Determines if the prompt should hide itself automatically after a set period. Defaults to false.<br>
autoHideDelay<br>
<br>
Sets the number of ms that the prompt should appear for if autoHidePrompt is set to true. Defaults to 2000.<br>
Validators<br>
<br>
Validators are encoded in the field's class attribute, as follows<br>
required<br>
<br>
Speaks for itself, fails if the element has no value. This validator can apply to pretty much any kind of input field.<br>
<br>
&lt;input value="" class="validate[required]" type="text" name="email" id="email" /&gt;<br>
&lt;input class="validate[required]" type="checkbox" id="agree" name="agree"/&gt;<br>
<br>
&lt;select name="sport" id="sport" class="validate[required]" id="sport"&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;option value=""&gt;Choose a sport&lt;/option&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;option value="option1"&gt;Tennis&lt;/option&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;option value="option2"&gt;Football&lt;/option&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;option value="option3"&gt;Golf&lt;/option&gt;<br>
&lt;/select&gt;<br>
<br>
groupRequired<br>
<br>
At least one of the field of the group must be filled. It needs to be given a group name that is unique across the form.<br>
<br>
&lt;input value="" class="validate[groupRequired[payments]]" type="text" name="creditcard" id="creditcard" /&gt;<br>
&lt;input class="validate[groupRequired[payments]]" type="text" id="paypal" name="paypal"/&gt;<br>
<br>
custom[regex_name]<br>
<br>
Validates the element's value to a predefined list of regular expressions.<br>
<br>
&lt;input value="someone@nowhere.com" class="validate[required,custom[email]]" type="text" name="email" id="email" /&gt;<br>
<br>
Please refer to the section Custom Regex for a list of available regular expressions.<br>
funcCall[methodName]<br>
<br>
Validates a field using a third party function call. If a validation error occurs, the function must return an error message that will automatically show in the error prompt.<br>
<br>
function checkHELLO(field, rules, i, options){<br>
&nbsp;&nbsp;if (field.val() != "HELLO") {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// this allows the use of i18 for the error msgs<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return options.allrules.validate2fields.alertText;<br>
&nbsp;&nbsp;}<br>
}<br>
<br>
The following declaration will do<br>
<br>
&lt;input value="" class="validate[required,funcCall[checkHELLO]]" type="text" id="lastname" name="lastname" /&gt;<br>
<br>
ajax[selector]<br>
<br>
Delegates the validation to a server URL using an asynchronous Ajax request. The selector is used to identify a block of properties in the translation file, take the following for example.<br>
<br>
&lt;input value="" class="validate[required,custom[onlyLetterNumber],maxSize[20],ajax[ajaxUserCall]] text-input" type="text" name="user" id="user" /&gt;<br>
<br>
"ajaxUserCall": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;"url": "ajaxValidateFieldUser",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"extraData": "name=eric",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"extraDataDynamic": ['#user_id', '#user_email'],<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* This user is already taken",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertTextOk": "All good!",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertTextLoad": "* Validating, please wait"<br>
},<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;url - is the remote restful service to call<br>
&nbsp;&nbsp;&nbsp;&nbsp;extraData - optional parameters to send<br>
&nbsp;&nbsp;&nbsp;&nbsp;extraDataDynamic - optional DOM id's that should have their values sent as parameters<br>
&nbsp;&nbsp;&nbsp;&nbsp;alertText - error prompt message if validation fails<br>
&nbsp;&nbsp;&nbsp;&nbsp;alertTextOk - optional prompt if validation succeeds (shows green)<br>
&nbsp;&nbsp;&nbsp;&nbsp;alertTextLoad - message displayed while the validation is being performed<br>
<br>
This validator is explained in further details in the Ajax section.<br>
equals[field.id]<br>
<br>
Checks if the current field's value equals the value of the specified field.<br>
min[float]<br>
<br>
Validates when the field's value is less than, or equal to, the given parameter.<br>
max[float]<br>
<br>
Validates when the field's value is more than, or equal to, the given parameter.<br>
minSize[integer]<br>
<br>
Validates if the element content size (in characters) is more than, or equal to, the given integer. integer &lt;= input.value.length<br>
maxSize[integer]<br>
<br>
Validates if the element content size (in characters) is less than, or equal to, the given integer. input.value.length &lt;= integer<br>
past[NOW or a date]<br>
<br>
Checks if the element's value (which is implicitly a date) is earlier than the given date. When "NOW" is used as a parameter, the date will be calculate in the browser. Note that this may be different from the server date. Dates use the ISO format YYYY-MM-DD<br>
<br>
&lt;input value="" class="validate[required,custom[date],past[now]]" type="text" id="birthdate" name="birthdate" /&gt;<br>
&lt;input value="" class="validate[required,custom[date],past[2010-01-01]]" type="text" id="appointment" name="appointment" /&gt;<br>
<br>
future[NOW or a date]<br>
<br>
Checks if the element's value (which is implicitly a date) is greater than the given date. When "NOW" is used as a parameter, the date will be calculate in the browser. Note that this may be different from the server date. Dates use the ISO format YYYY-MM-DD<br>
<br>
&lt;input value="" class="validate[required,custom[date],future[now]]" type="text" id="appointment" name="appointment" /&gt;<br>
// a date in 2009<br>
&lt;input value="" class="validate[required,custom[date],future[2009-01-01],past[2009-12-31]]" type="text" id="d1" name="d1" /&gt;<br>
<br>
minCheckbox[integer]<br>
<br>
Validates when a minimum of integer checkboxes are selected. The validator uses a special naming convention to identify the checkboxes as part of a group.<br>
<br>
The following example, enforces a minimum of two selected checkboxes<br>
<br>
&lt;input class="validate[minCheckbox[2]]" type="checkbox" name="group1" id="maxcheck1" value="5"/&gt;<br>
&lt;input class="validate[minCheckbox[2]]" type="checkbox" name="group1" id="maxcheck2" value="3"/&gt;<br>
&lt;input class="validate[minCheckbox[2]]" type="checkbox" name="group1" id="maxcheck3" value="9"/&gt;<br>
<br>
Note how the input.name is identical across the fields.<br>
maxCheckbox[integer]<br>
<br>
Same as above but limits the maximum number of selected check boxes.
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>attach</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Attaches jQuery.validationEngine to form.submit and field.blur events.<br>
<br>
$("#formID1").validationEngine('attach');<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>detach</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Unregisters any bindings that may point to jQuery.validaitonEngine.<br>
<br>
$("#formID1").validationEngine('detach');<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>validate</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Validates the form and displays prompts accordingly. Returns true if the form validates, false if it contains errors. Note that if you use an ajax form validator, the actual result will be delivered asynchronously to the function options.onAjaxFormComplete.<br>
<br>
alert( $("#formID1").validationEngine('validate') );<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>validate one field</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Validates one field and displays the prompt accordingly. Returns false if the input validates, true if it contains errors.<br>
<br>
alert( $("#formID1").validationEngine('validateField', "#emailInput") );<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>showPrompt</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		showPrompt (promptText, type, promptPosition, showArrow)<br>
<br>
Displays a prompt on a given element. Note that the prompt can be displayed on any element by providing an id.<br>
<br>
The method takes four parameters: 1. the text of the prompt itself 2. a type which defines the visual look of the prompt: 'pass' (green), 'load' (black) anything else (red) 3. an optional position: either "topLeft", "topRight", "bottomLeft", "centerRight", "bottomRight". Defaults to "topRight" 4. an optional boolean which indicates if the prompt should display a directional arrow<br>
<br>
&lt;fieldset&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;legend id="legendid"&gt;Email&lt;/legend&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;a href="#" onclick="$('#legendid').validationEngine('showPrompt', 'This a custom msg', 'load')"&gt;Show prompt&lt;/a&gt;<br>
&lt;/fieldset&gt;<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>hidePrompt</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		hidePrompt<br>
<br>
Closes the prompt linked to the input.<br>
<br>
$('#inputID').validationEngine('hidePrompt');<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>hide</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		hide<br>
<br>
Closes error prompts in the current form (in case you have more than one form on the page).<br>
<br>
$('#formID1').validationEngine('hide');<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>hideAll</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Closes all error prompts on the page.<br>
<br>
$('#formID1').validationEngine('hideAll');<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>updatePromptsPosition</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		updatePromptsPosition<br>
<br>
Update the form prompts positions.<br>
<br>
$("#formID").validationEngine("updatePromptsPosition")&nbsp;&nbsp;&nbsp;&nbsp;<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Options</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Options<br>
<br>
Options are typically passed to the init or attach action as a parameter.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;$("#formID1").validationEngine({promptPosition : "centerRight", scroll: false});<br>
&nbsp;&nbsp;&nbsp;&nbsp;$("#formID1").validationEngine('attach', {promptPosition : "centerRight", scroll: false});<br>
<br>
validationEventTrigger<br>
<br>
Name of the event triggering field validation, defaults to blur.<br>
scroll<br>
<br>
Determines if we should scroll the page to the first error, defaults to true.<br>
binded<br>
<br>
If set to false, it remove blur events and only validate on submit.<br>
promptPosition<br>
<br>
Where should the prompt show? Possible values are "topLeft", "topRight", "bottomLeft", "centerRight", "bottomRight". Defaults to "topRight". Default position adjustment could also be provided.<br>
ajaxFormValidation<br>
<br>
If set to true, turns Ajax form validation logic on. Defaults to false. Form validation takes place when the validate() action is called or when the form is submitted.<br>
ajaxFormValidationURL<br>
<br>
If set, the ajax submit validation will use this url instead of the form action<br>
onBeforeAjaxFormValidation(form, options)<br>
<br>
When ajaxFormValidation is turned on, this is the function that will be called before the asynchronous AJAX form validation call. May return false to stop the Ajax form validation<br>
onAjaxFormComplete: function(status, form, errors, options)<br>
<br>
When ajaxFormValidation is turned on, this function is used to asynchronously process the result of the validation. the status is a boolean. If true, the ajax call completed and all the server side form validations passed.<br>
relative<br>
<br>
Set to true when the form shows in a scrolling div, defaults to false, the error boxes are appended after the input instead of body<br>
onValidationComplete<br>
<br>
When defined, stops the the form from auto-submitting, and lets you handle the validation status via a function<br>
<br>
jQuery("#formID2").validationEngine('attach', {<br>
&nbsp;&nbsp;onValidationComplete: function(form, status){<br>
&nbsp;&nbsp;&nbsp;&nbsp;alert("The form status is: " +status+", it will never submit");<br>
&nbsp;&nbsp;}&nbsp;&nbsp;<br>
});<br>
<br>
onSuccess<br>
<br>
If set, this callback function will be called when all validations passed.<br>
onFailure<br>
<br>
If set, this callback function will be called when it found an error.<br>
autoPositionUpdate<br>
<br>
Auto update prompt position after window resize, disabled by default<br>
autoHidePrompt<br>
<br>
Determines if the prompt should hide itself automatically after a set period. Defaults to false.<br>
autoHideDelay<br>
<br>
Sets the number of ms that the prompt should appear for if autoHidePrompt is set to true. Defaults to 2000. 
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>validationEventTrigger</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		validationEventTrigger<br>
<br>
Name of the event triggering field validation, defaults to blur.
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>scroll</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		scroll<br>
<br>
Determines if we should scroll the page to the first error, defaults to true.
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>binded</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		binded<br>
<br>
If set to false, it remove blur events and only validate on submit.
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>promptPosition</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		promptPosition<br>
<br>
Where should the prompt show? Possible values are "topLeft", "topRight", "bottomLeft", "centerRight", "bottomRight". Defaults to "topRight". Default position adjustment could also be provided.
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>ajaxFormValidation</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		ajaxFormValidation<br>
<br>
If set to true, turns Ajax form validation logic on. Defaults to false. Form validation takes place when the validate() action is called or when the form is submitted.
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>ajaxFormValidationURL</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		ajaxFormValidationURL<br>
<br>
If set, the ajax submit validation will use this url instead of the form action
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>onBeforeAjaxFormValidation</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		onBeforeAjaxFormValidation(form, options)<br>
<br>
When ajaxFormValidation is turned on, this is the function that will be called before the asynchronous AJAX form validation call. May return false to stop the Ajax form validation
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>onAjaxFormComplete</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		onAjaxFormComplete: function(status, form, errors, options)<br>
<br>
When ajaxFormValidation is turned on, this function is used to asynchronously process the result of the validation. the status is a boolean. If true, the ajax call completed and all the server side form validations passed. 
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>relative</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		relative<br>
<br>
Set to true when the form shows in a scrolling div, defaults to false, the error boxes are appended after the input instead of body
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>onValidationComplete</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		onValidationComplete<br>
<br>
When defined, stops the the form from auto-submitting, and lets you handle the validation status via a function<br>
<br>
jQuery("#formID2").validationEngine('attach', {<br>
&nbsp;&nbsp;onValidationComplete: function(form, status){<br>
&nbsp;&nbsp;&nbsp;&nbsp;alert("The form status is: " +status+", it will never submit");<br>
&nbsp;&nbsp;}&nbsp;&nbsp;<br>
});<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>onSuccess</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		onSuccess<br>
<br>
If set, this callback function will be called when all validations passed.
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>onFailure</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		onFailure<br>
<br>
If set, this callback function will be called when it found an error.
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>autoPositionUpdate</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		autoPositionUpdate<br>
<br>
Auto update prompt position after window resize, disabled by default
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>autoHidePrompt</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		autoHidePrompt<br>
<br>
Determines if the prompt should hide itself automatically after a set period. Defaults to false. 
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>autoHideDelay</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		autoHideDelay<br>
<br>
Sets the number of ms that the prompt should appear for if autoHidePrompt is set to true. Defaults to 2000. 
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Validators</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Validators<br>
<br>
Validators are encoded in the field's class attribute, as follows<br>
required<br>
<br>
Speaks for itself, fails if the element has no value. This validator can apply to pretty much any kind of input field.<br>
<br>
&lt;input value="" class="validate[required]" type="text" name="email" id="email" /&gt;<br>
&lt;input class="validate[required]" type="checkbox" id="agree" name="agree"/&gt;<br>
<br>
&lt;select name="sport" id="sport" class="validate[required]" id="sport"&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;option value=""&gt;Choose a sport&lt;/option&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;option value="option1"&gt;Tennis&lt;/option&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;option value="option2"&gt;Football&lt;/option&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;option value="option3"&gt;Golf&lt;/option&gt;<br>
&lt;/select&gt;<br>
<br>
groupRequired<br>
<br>
At least one of the field of the group must be filled. It needs to be given a group name that is unique across the form.<br>
<br>
&lt;input value="" class="validate[groupRequired[payments]]" type="text" name="creditcard" id="creditcard" /&gt;<br>
&lt;input class="validate[groupRequired[payments]]" type="text" id="paypal" name="paypal"/&gt;<br>
<br>
custom[regex_name]<br>
<br>
Validates the element's value to a predefined list of regular expressions.<br>
<br>
&lt;input value="someone@nowhere.com" class="validate[required,custom[email]]" type="text" name="email" id="email" /&gt;<br>
<br>
Please refer to the section Custom Regex for a list of available regular expressions.<br>
funcCall[methodName]<br>
<br>
Validates a field using a third party function call. If a validation error occurs, the function must return an error message that will automatically show in the error prompt.<br>
<br>
function checkHELLO(field, rules, i, options){<br>
&nbsp;&nbsp;if (field.val() != "HELLO") {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// this allows the use of i18 for the error msgs<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return options.allrules.validate2fields.alertText;<br>
&nbsp;&nbsp;}<br>
}<br>
<br>
The following declaration will do<br>
<br>
&lt;input value="" class="validate[required,funcCall[checkHELLO]]" type="text" id="lastname" name="lastname" /&gt;<br>
<br>
ajax[selector]<br>
<br>
Delegates the validation to a server URL using an asynchronous Ajax request. The selector is used to identify a block of properties in the translation file, take the following for example.<br>
<br>
&lt;input value="" class="validate[required,custom[onlyLetterNumber],maxSize[20],ajax[ajaxUserCall]] text-input" type="text" name="user" id="user" /&gt;<br>
<br>
"ajaxUserCall": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;"url": "ajaxValidateFieldUser",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"extraData": "name=eric",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"extraDataDynamic": ['#user_id', '#user_email'],<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* This user is already taken",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertTextOk": "All good!",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertTextLoad": "* Validating, please wait"<br>
},<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;url - is the remote restful service to call<br>
&nbsp;&nbsp;&nbsp;&nbsp;extraData - optional parameters to send<br>
&nbsp;&nbsp;&nbsp;&nbsp;extraDataDynamic - optional DOM id's that should have their values sent as parameters<br>
&nbsp;&nbsp;&nbsp;&nbsp;alertText - error prompt message if validation fails<br>
&nbsp;&nbsp;&nbsp;&nbsp;alertTextOk - optional prompt if validation succeeds (shows green)<br>
&nbsp;&nbsp;&nbsp;&nbsp;alertTextLoad - message displayed while the validation is being performed<br>
<br>
This validator is explained in further details in the Ajax section.<br>
equals[field.id]<br>
<br>
Checks if the current field's value equals the value of the specified field.<br>
min[float]<br>
<br>
Validates when the field's value is less than, or equal to, the given parameter.<br>
max[float]<br>
<br>
Validates when the field's value is more than, or equal to, the given parameter.<br>
minSize[integer]<br>
<br>
Validates if the element content size (in characters) is more than, or equal to, the given integer. integer &lt;= input.value.length<br>
maxSize[integer]<br>
<br>
Validates if the element content size (in characters) is less than, or equal to, the given integer. input.value.length &lt;= integer<br>
past[NOW or a date]<br>
<br>
Checks if the element's value (which is implicitly a date) is earlier than the given date. When "NOW" is used as a parameter, the date will be calculate in the browser. Note that this may be different from the server date. Dates use the ISO format YYYY-MM-DD<br>
<br>
&lt;input value="" class="validate[required,custom[date],past[now]]" type="text" id="birthdate" name="birthdate" /&gt;<br>
&lt;input value="" class="validate[required,custom[date],past[2010-01-01]]" type="text" id="appointment" name="appointment" /&gt;<br>
<br>
future[NOW or a date]<br>
<br>
Checks if the element's value (which is implicitly a date) is greater than the given date. When "NOW" is used as a parameter, the date will be calculate in the browser. Note that this may be different from the server date. Dates use the ISO format YYYY-MM-DD<br>
<br>
&lt;input value="" class="validate[required,custom[date],future[now]]" type="text" id="appointment" name="appointment" /&gt;<br>
// a date in 2009<br>
&lt;input value="" class="validate[required,custom[date],future[2009-01-01],past[2009-12-31]]" type="text" id="d1" name="d1" /&gt;<br>
<br>
minCheckbox[integer]<br>
<br>
Validates when a minimum of integer checkboxes are selected. The validator uses a special naming convention to identify the checkboxes as part of a group.<br>
<br>
The following example, enforces a minimum of two selected checkboxes<br>
<br>
&lt;input class="validate[minCheckbox[2]]" type="checkbox" name="group1" id="maxcheck1" value="5"/&gt;<br>
&lt;input class="validate[minCheckbox[2]]" type="checkbox" name="group1" id="maxcheck2" value="3"/&gt;<br>
&lt;input class="validate[minCheckbox[2]]" type="checkbox" name="group1" id="maxcheck3" value="9"/&gt;<br>
<br>
Note how the input.name is identical across the fields.<br>
maxCheckbox[integer]<br>
<br>
Same as above but limits the maximum number of selected check boxes.
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>required</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		required<br>
<br>
Speaks for itself, fails if the element has no value. This validator can apply to pretty much any kind of input field.<br>
<br>
&lt;input value="" class="validate[required]" type="text" name="email" id="email" /&gt;<br>
&lt;input class="validate[required]" type="checkbox" id="agree" name="agree"/&gt;<br>
<br>
&lt;select name="sport" id="sport" class="validate[required]" id="sport"&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;option value=""&gt;Choose a sport&lt;/option&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;option value="option1"&gt;Tennis&lt;/option&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;option value="option2"&gt;Football&lt;/option&gt;<br>
&nbsp;&nbsp;&nbsp;&lt;option value="option3"&gt;Golf&lt;/option&gt;<br>
&lt;/select&gt;<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>groupRequired</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		groupRequired<br>
<br>
At least one of the field of the group must be filled. It needs to be given a group name that is unique across the form.<br>
<br>
<br>
&lt;input value="" class="validate[groupRequired[payments]]" type="text" name="creditcard" id="creditcard" /&gt;<br>
&lt;input class="validate[groupRequired[payments]]" type="text" id="paypal" name="paypal"/&gt;
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>custom</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		custom[regex_name]<br>
<br>
Validates the element's value to a predefined list of regular expressions.<br>
<br>
&lt;input value="someone@nowhere.com" class="validate[required,custom[email]]" type="text" name="email" id="email" /&gt;<br>
<br>
Please refer to the section Custom Regex for a list of available regular expressions.
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>funcCall</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		funcCall[methodName]<br>
<br>
Validates a field using a third party function call. If a validation error occurs, the function must return an error message that will automatically show in the error prompt.<br>
<br>
function checkHELLO(field, rules, i, options){<br>
&nbsp;&nbsp;if (field.val() != "HELLO") {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// this allows the use of i18 for the error msgs<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return options.allrules.validate2fields.alertText;<br>
&nbsp;&nbsp;}<br>
}<br>
<br>
The following declaration will do<br>
<br>
&lt;input value="" class="validate[required,funcCall[checkHELLO]]" type="text" id="lastname" name="lastname" /&gt;
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>ajax[selector]</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		ajax[selector]<br>
<br>
Delegates the validation to a server URL using an asynchronous Ajax request. The selector is used to identify a block of properties in the translation file, take the following for example.<br>
<br>
&lt;input value="" class="validate[required,custom[onlyLetterNumber],maxSize[20],ajax[ajaxUserCall]] text-input" type="text" name="user" id="user" /&gt;<br>
<br>
<br>
"ajaxUserCall": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;"url": "ajaxValidateFieldUser",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"extraData": "name=eric",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"extraDataDynamic": ['#user_id', '#user_email'],<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* This user is already taken",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertTextOk": "All good!",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertTextLoad": "* Validating, please wait"<br>
},<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;url - is the remote restful service to call<br>
&nbsp;&nbsp;&nbsp;&nbsp;extraData - optional parameters to send<br>
&nbsp;&nbsp;&nbsp;&nbsp;extraDataDynamic - optional DOM id's that should have their values sent as parameters<br>
&nbsp;&nbsp;&nbsp;&nbsp;alertText - error prompt message if validation fails<br>
&nbsp;&nbsp;&nbsp;&nbsp;alertTextOk - optional prompt if validation succeeds (shows green)<br>
&nbsp;&nbsp;&nbsp;&nbsp;alertTextLoad - message displayed while the validation is being performed<br>
<br>
This validator is explained in further details in the Ajax section.
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>equals</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		equals[field.id]<br>
<br>
Checks if the current field's value equals the value of the specified field.
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>min</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		min[float]<br>
<br>
Validates when the field's value is less than, or equal to, the given parameter.
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>max</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		max[float]<br>
<br>
Validates when the field's value is more than, or equal to, the given parameter.
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>minSize</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		minSize[integer]<br>
<br>
Validates if the element content size (in characters) is more than, or equal to, the given integer. integer &lt;= input.value.length
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>maxSize</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		maxSize[integer]<br>
<br>
Validates if the element content size (in characters) is less than, or equal to, the given integer. input.value.length &lt;= integer
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>past</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		past[NOW or a date]<br>
<br>
Checks if the element's value (which is implicitly a date) is earlier than the given date. When "NOW" is used as a parameter, the date will be calculate in the browser. Note that this may be different from the server date. Dates use the ISO format YYYY-MM-DD<br>
<br>
&lt;input value="" class="validate[required,custom[date],past[now]]" type="text" id="birthdate" name="birthdate" /&gt;<br>
&lt;input value="" class="validate[required,custom[date],past[2010-01-01]]" type="text" id="appointment" name="appointment" /&gt;
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>future</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		future[NOW or a date]<br>
<br>
Checks if the element's value (which is implicitly a date) is greater than the given date. When "NOW" is used as a parameter, the date will be calculate in the browser. Note that this may be different from the server date. Dates use the ISO format YYYY-MM-DD<br>
<br>
<br>
&lt;input value="" class="validate[required,custom[date],future[now]]" type="text" id="appointment" name="appointment" /&gt;<br>
// a date in 2009<br>
&lt;input value="" class="validate[required,custom[date],future[2009-01-01],past[2009-12-31]]" type="text" id="d1" name="d1" /&gt;
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>minCheckbox</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		minCheckbox[integer]<br>
<br>
Validates when a minimum of integer checkboxes are selected. The validator uses a special naming convention to identify the checkboxes as part of a group.<br>
<br>
The following example, enforces a minimum of two selected checkboxes<br>
<br>
&lt;input class="validate[minCheckbox[2]]" type="checkbox" name="group1" id="maxcheck1" value="5"/&gt;<br>
&lt;input class="validate[minCheckbox[2]]" type="checkbox" name="group1" id="maxcheck2" value="3"/&gt;<br>
&lt;input class="validate[minCheckbox[2]]" type="checkbox" name="group1" id="maxcheck3" value="9"/&gt;<br>
<br>
Note how the input.name is identical across the fields. 
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>maxCheckbox</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		maxCheckbox[integer]<br>
<br>
Same as above but limits the maximum number of selected check boxes.
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Selectors</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Selectors<br>
<br>
We've introduced the notion of selectors without giving many details about them: A selector is a string which is used as a key to match properties in the translation files. Take the following example:<br>
<br>
"onlyNumber": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^[0-9\ ]+$/,<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* Numbers only"<br>
},<br>
"ajaxUserCall": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;"url": "ajaxValidateFieldUser",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"extraData": "name=eric",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* This user is already taken",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertTextOk": " * User is valid",<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertTextLoad": "* Validating, please wait"<br>
},<br>
"validate2fields": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* Please input HELLO"<br>
}<br>
<br>
onlyNumber, onlyLetter and validate2fields are all selectors. jQuery.validationEngine comes with a standard set but you are welcome to add you own to define AJAX backend services, error messages and/or new regular expressions.
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>The ValidationEngine with a datepicker</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		The ValidationEngine with a datepicker<br>
<br>
Using a datepicker with the engine is problematic because the validation is bound to the blur event. since we lose the focus before any data is entered in the field it creates a weird bug. Fortunately we implemented a fix that uses a delay during the datepicker binding.<br>
<br>
To use this mode you need to add the class datepicker to your input, like this:<br>
<br>
&lt;input type="text" id="req" name="req" class="validate[required] text-input datepicker" value=""&gt;<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Ajax Protocol</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Ajax Protocol<br>
<br>
The ajax validator takes a selector as an attribute. the selector points to a structure that defines the URL to call, the different messages to display and any extra parameters to add on the URL (when applicable). Please refer to the ajax[selector] description for more details.<br>
<br>
Ajax validation comes in two flavors:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Field Ajax validations, which take place when the user inputs a value in a field and moves away.<br>
&nbsp;&nbsp;&nbsp;&nbsp;Form Ajax validation, which takes place when the form is submitted or when the validate() action is called.<br>
<br>
Both options are optional.<br>
<br>
&lt;input value="" class="validate[required,ajax[ajaxUserCall]] text-input" type="text" name="user" id="user" /&gt;<br>
<br>
You can see a tutorial that makes the use of php here: &lt;http://www.position-absolute.com/articles/using-form-ajax-validation-with-the-jquery-validation-engine-plugin/&gt;<br>
Field ajax validation<br>
Protocol<br>
<br>
The client sends the fieldId and the fieldValue as a GET request to the server url.<br>
<br>
Client calls url?fieldId=id1&fieldValue=value1 ==&gt; Server<br>
<br>
Server responds with an array: [fieldid, status, errorMsg].<br>
<br>
Client receives &lt;== ["id1", boolean, errorMsg] Server<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;fieldid is the name (id) of the field<br>
&nbsp;&nbsp;&nbsp;&nbsp;status is the result of the validation, true if it passes, false if it fails<br>
&nbsp;&nbsp;&nbsp;&nbsp;errorMsg is an optional error string (or a selector) to the prompt text. If no error msg is returned, the prompt message is expected to be part of the rule with key "alertText" or "alertTextOk" (see the structure of the translation file)<br>
<br>
Form ajax validation<br>
Protocol<br>
<br>
The client sends the form fields and values as a GET request to the form.action url.<br>
<br>
Client calls url?fieldId=id1&fieldValue=value1&...etc ==&gt; Server (form.action)<br>
<br>
Server responds with an array of arrays: [fieldid, status, errorMsg].<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;fieldid is the name (id) of the field<br>
&nbsp;&nbsp;&nbsp;&nbsp;status is the result of the validation, true if it passes, false if it fails<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;errorMsg is an error string (or a selector) to the prompt text<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Client receives &lt;== [["id1", boolean,"errorMsg"],["id2", false, "there is an error "],["id3", true, "this field is good"]]<br>
<br>
Note that normally errors (status=false) are returned from the server. However you may also decide to return an entry with a status=true in which case the errorMsg will show as a green prompt.<br>
Validation URL<br>
<br>
By default the engine use the form action to validate the form, you can however set a default url using:<br>
<br>
**ajaxFormValidationURL<br>
Callbacks<br>
<br>
Since the form validation is asynchronously delegated to the form action, we provide two callback methods:<br>
<br>
onBeforeAjaxFormValidation(form, options) is called before the ajax form validation call, it may return false to stop the request<br>
<br>
onAjaxFormComplete: function(form, status, json_response_from_server, options) is called after the ajax form validation call
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Field ajax validation</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Field ajax validation<br>
Protocol<br>
<br>
The client sends the fieldId and the fieldValue as a GET request to the server url.<br>
<br>
Client calls url?fieldId=id1&fieldValue=value1 ==&gt; Server<br>
<br>
Server responds with an array: [fieldid, status, errorMsg].<br>
<br>
Client receives &lt;== ["id1", boolean, errorMsg] Server<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;fieldid is the name (id) of the field<br>
&nbsp;&nbsp;&nbsp;&nbsp;status is the result of the validation, true if it passes, false if it fails<br>
&nbsp;&nbsp;&nbsp;&nbsp;errorMsg is an optional error string (or a selector) to the prompt text. If no error msg is returned, the prompt message is expected to be part of the rule with key "alertText" or "alertTextOk" (see the structure of the translation file)
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Form ajax validation</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Form ajax validation<br>
Protocol<br>
<br>
The client sends the form fields and values as a GET request to the form.action url.<br>
<br>
Client calls url?fieldId=id1&fieldValue=value1&...etc ==&gt; Server (form.action)<br>
<br>
Server responds with an array of arrays: [fieldid, status, errorMsg].<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;fieldid is the name (id) of the field<br>
&nbsp;&nbsp;&nbsp;&nbsp;status is the result of the validation, true if it passes, false if it fails<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;errorMsg is an error string (or a selector) to the prompt text<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Client receives &lt;== [["id1", boolean,"errorMsg"],["id2", false, "there is an error "],["id3", true, "this field is good"]]<br>
<br>
Note that normally errors (status=false) are returned from the server. However you may also decide to return an entry with a status=true in which case the errorMsg will show as a green prompt.<br>
Validation URL<br>
<br>
By default the engine use the form action to validate the form, you can however set a default url using:<br>
<br>
**ajaxFormValidationURL<br>
Callbacks<br>
<br>
Since the form validation is asynchronously delegated to the form action, we provide two callback methods:<br>
<br>
onBeforeAjaxFormValidation(form, options) is called before the ajax form validation call, it may return false to stop the request<br>
<br>
onAjaxFormComplete: function(form, status, json_response_from_server, options) is called after the ajax form validation call
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Protocol</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Protocol<br>
<br>
The client sends the form fields and values as a GET request to the form.action url.<br>
<br>
Client calls url?fieldId=id1&fieldValue=value1&...etc ==&gt; Server (form.action)<br>
<br>
Server responds with an array of arrays: [fieldid, status, errorMsg].<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;fieldid is the name (id) of the field<br>
&nbsp;&nbsp;&nbsp;&nbsp;status is the result of the validation, true if it passes, false if it fails<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;errorMsg is an error string (or a selector) to the prompt text<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Client receives &lt;== [["id1", boolean,"errorMsg"],["id2", false, "there is an error "],["id3", true, "this field is good"]]<br>
<br>
Note that normally errors (status=false) are returned from the server. However you may also decide to return an entry with a status=true in which case the errorMsg will show as a green prompt.<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Validation URL</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Validation URL<br>
<br>
By default the engine use the form action to validate the form, you can however set a default url using:<br>
<br>
**ajaxFormValidationURL
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Callbacks</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Callbacks<br>
<br>
Since the form validation is asynchronously delegated to the form action, we provide two callback methods:<br>
<br>
onBeforeAjaxFormValidation(form, options) is called before the ajax form validation call, it may return false to stop the request<br>
<br>
onAjaxFormComplete: function(form, status, json_response_from_server, options) is called after the ajax form validation call<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Custom Regex</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Custom Regex<br>
<br>
jQuery.validationEngine comes with a lot of predefined expressions. Regex validation rules are specified as follows:<br>
<br>
&lt;input value="" class="validate[custom[email]]" type="text" name="email" id="email" /&gt;<br>
<br>
Note that the selector identifies a given regular expression in the translation file, but also its associated error prompt messages and optional green prompt message.<br>
phone<br>
<br>
a typical phone number with an optional country code and extension. Note that the validation is relaxed, please add extra validations for your specific country.<br>
<br>
49-4312 / 777 777<br>
+1 (305) 613-0958 x101<br>
(305) 613 09 58 ext 101<br>
3056130958<br>
+33 1 47 37 62 24 extension 3<br>
(016977) 1234<br>
04312 - 777 777<br>
91-12345-12345<br>
+58 295416 7216<br>
<br>
url<br>
<br>
Matches a URL such as &lt;http://myserver.com&gt;, &lt;https://www.crionics.com&gt; or &lt;ftp://myserver.ws&gt;<br>
email<br>
<br>
Easy, an email : username@hostname.com<br>
date<br>
<br>
An ISO date, YYYY-MM-DD<br>
number<br>
<br>
Floating points with an optional sign. ie. -143.22 or .77 but also +234,23<br>
integer<br>
<br>
Integers with an optional sign. ie. -635 +2201 738<br>
ipv4<br>
<br>
An IP address (v4) ie. 127.0.0.1<br>
onlyNumberSp<br>
<br>
Only numbers and spaces characters<br>
onlyLetterSp<br>
<br>
Only letters and space characters<br>
onlyLetterNumber<br>
<br>
Only letters and numbers, no space 
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>phone</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		phone<br>
<br>
a typical phone number with an optional country code and extension. Note that the validation is relaxed, please add extra validations for your specific country.<br>
<br>
49-4312 / 777 777<br>
+1 (305) 613-0958 x101<br>
(305) 613 09 58 ext 101<br>
3056130958<br>
+33 1 47 37 62 24 extension 3<br>
(016977) 1234<br>
04312 - 777 777<br>
91-12345-12345<br>
+58 295416 7216
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>url</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		url<br>
<br>
Matches a URL such as &lt;http://myserver.com&gt;, &lt;https://www.crionics.com&gt; or &lt;ftp://myserver.ws&gt;
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>email</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		email<br>
<br>
Easy, an email : username@hostname.com
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>date</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		date<br>
<br>
An ISO date, YYYY-MM-DD
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>number</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		number<br>
<br>
Floating points with an optional sign. ie. -143.22 or .77 but also +234,23
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>integer</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		integer<br>
<br>
Integers with an optional sign. ie. -635 +2201 738
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>ipv4</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		ipv4<br>
<br>
An IP address (v4) ie. 127.0.0.1
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>onlyNumberSp</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		onlyNumberSp<br>
<br>
Only numbers and spaces characters
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>onlyLetterSp</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		onlyLetterSp<br>
<br>
Only letters and space characters
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>onlyLetterNumber</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		onlyLetterNumber<br>
<br>
Only letters and numbers, no space 
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Relative</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Relative<br>
<br>
Validation in overflown div and lightbox with scrollable content<br>
<br>
To get the supported mode you need to add these options when instantiating your plugin:<br>
<br>
$("#formID").validationEngine({<br>
&nbsp;&nbsp;relative: true,<br>
});<br>
<br>
The big change in this method is that normally the engine will append every error box to the body. In this case it will append every error box before the input validated. This adds a bit of complexity; if you want the error box to behave correctly you need to wrap the input in a div with relative position, and exactly wrap the input width and height. The easiest way to do that is by adding float:left, like in the example provided.<br>
<br>
The default top right position is currently the only supported position. Please use this mode only in overflown div and in scollable boxes, it is slower and a bit less stable, also there will be no scrolling, this is not supported in overflown boxes.<br>
<br>
You can also defined a scrollable container if needed :<br>
<br>
$("#formID").validationEngine({<br>
&nbsp;&nbsp;relative: true,<br>
&nbsp;&nbsp;overflownDIV:"#containerScrollable"<br>
});<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Hooks</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Hooks<br>
<br>
The plugin provides some hooks using jQuery bind functionality.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;jqv.form.validating : Trigger when the form is submitted and before it starts the validation process<br>
&nbsp;&nbsp;&nbsp;&nbsp;jqv.field.result(event, field, errorFound, prompText) : Triggers when a field is validated with the result.<br>
&nbsp;&nbsp;&nbsp;&nbsp;jqv.form.result(event, errorFound) : Triggers when a form is validated with the result<br>
<br>
An example of binding a custom function to these events would be:<br>
<br>
$("#formID").bind("jqv.form.result", function(event, errorFound) {<br>
&nbsp;&nbsp;if(errorFound)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("There is a problem with your form");<br>
});<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Customizations</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Customizations<br>
<br>
What would a good library be without customization?<br>
Adding regular expressions<br>
<br>
Adding new regular expressions is easy: open your translation file and add a new entry to the list<br>
<br>
"onlyLetter": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^[a-zA-Z\ \']+$/,<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* Letters only"<br>
},<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;"onlyLetter" is a sample selector name<br>
&nbsp;&nbsp;&nbsp;&nbsp;"regex" is a javascript regular expression<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertText" is the message to display when the validation fails<br>
<br>
You can now use the new regular expression as such<br>
<br>
&lt;input type="text" id="myid" name="myid" class="validation[custom[onlyLetter]]"/&gt;<br>
<br>
Don't forget to contribute!<br>
Customizing the look and feel<br>
<br>
Edit the file validationEngine.jquery.css and customize the stylesheet to your liking. it's trivial if you know CSS.<br>
Adding more locales<br>
<br>
You can easily add a locale by taking jquery.validationEngine-en.js as an example. Feel free to share the translation ;-)<br>
Changing defaults options globally<br>
<br>
You can, for example, disable the scrolling globally by using $.validationEngine.defaults.scroll = false.<br>
<br>
This need to be added before the initialization, one good way to handle this would be to add your settings in a file.<br>
<br>
&lt;script src="js/jquery.validationEngine-en.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;<br>
&lt;script src="js/jquery.validationEngine.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;<br>
&lt;script src="js/jquery.validationEngine-settings.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Adding regular expressions</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Adding regular expressions<br>
<br>
Adding new regular expressions is easy: open your translation file and add a new entry to the list<br>
<br>
"onlyLetter": {<br>
&nbsp;&nbsp;&nbsp;&nbsp;"regex": /^[a-zA-Z\ \']+$/,<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertText": "* Letters only"<br>
},<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;"onlyLetter" is a sample selector name<br>
&nbsp;&nbsp;&nbsp;&nbsp;"regex" is a javascript regular expression<br>
&nbsp;&nbsp;&nbsp;&nbsp;"alertText" is the message to display when the validation fails<br>
<br>
You can now use the new regular expression as such<br>
<br>
&lt;input type="text" id="myid" name="myid" class="validation[custom[onlyLetter]]"/&gt;<br>
<br>
Don't forget to contribute!
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Customizing the look and feel</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Customizing the look and feel<br>
<br>
Edit the file validationEngine.jquery.css and customize the stylesheet to your liking. it's trivial if you know CSS.
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Adding more locales</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Adding more locales<br>
<br>
You can easily add a locale by taking jquery.validationEngine-en.js as an example. Feel free to share the translation ;-)
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Changing defaults options globally</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Changing defaults options globally<br>
<br>
You can, for example, disable the scrolling globally by using $.validationEngine.defaults.scroll = false.<br>
<br>
This need to be added before the initialization, one good way to handle this would be to add your settings in a file.<br>
<br>
&lt;script src="js/jquery.validationEngine-en.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;<br>
&lt;script src="js/jquery.validationEngine.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;<br>
&lt;script src="js/jquery.validationEngine-settings.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;<br>

		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Using the validationEngine with modal & dialog plugins</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Using the validationEngine with modal & dialog plugins<br>
<br>
You can have more information about implementing the engine with modal views here: [&lt;http://www.position-absolute.com/articles/using-the-jquery-validation-engine-with-modal-plugins/&gt;]<br>
<br>
This is a question I often get asked by email, and I think there is enough requests to warrant a small blog post.<br>
All about the DOM<br>
<br>
The validationEngine expect your form to be present on the page when you initialize the plugin, and this is where modal plugins fall short. If your using those plugins you generally want to load a new piece of html into your document using AJAX.<br>
<br>
In that case you need to initialize the validationEngine after you loaded your modal content. Generally modal plugins have an api that let you do this. Let’s take 2 example, Colorbox and jQuey ui.<br>
<br>
Colorbox :<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;$(document).bind('cbox_complete', function(){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$("#formID").validationEngine();<br>
&nbsp;&nbsp;&nbsp;&nbsp;});<br>
<br>
jQuery UI :<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;$( ".selector" ).bind( "dialogopen", function(event, ui) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$("#formID").validationEngine();<br>
&nbsp;&nbsp;&nbsp;&nbsp;});<br>
<br>
That should give you a pretty good idea of what you need to do whatever the plugin.
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Rules of thumb</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Rules of thumb<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;field.id is unique across the page<br>
&nbsp;&nbsp;&nbsp;&nbsp;From 2.2.4 and up, jquery 1.6+ is required because of prop()<br>
&nbsp;&nbsp;&nbsp;&nbsp;for simplicity and consistency field.id and field.name should match (except with minCheckbox and maxCheckbox validators)<br>
&nbsp;&nbsp;&nbsp;&nbsp;spaces or special chars should be avoided in field.id or field.name<br>
&nbsp;&nbsp;&nbsp;&nbsp;use lower case for input.type ie. text, password, textarea, checkbox, radio<br>
&nbsp;&nbsp;&nbsp;&nbsp;validators are evaluated from left to right, use the Ajax validator last e.g. validate[custom[onlyLetter],length[0,100],ajax[ajaxNameCall]]<br>
&nbsp;&nbsp;&nbsp;&nbsp;please use only one Ajax validator per field!<br>
&nbsp;&nbsp;&nbsp;&nbsp;JSON services should live on the same server (or you will get into browser security issues)<br>
&nbsp;&nbsp;&nbsp;&nbsp;in a perfect RESTful world, http GET is used to READ data, http POST is used to WRITE data: which translates into -&gt; Ajax validations should use GET, the actual form post should use a POST request.
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#e0e0e0">
		<font color="#008000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		<b>Contribution</b>
		</font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#f0f0f0">
		<font color="#000000" face="Tahoma, Helvetica, sans-serif, Verdana, Arial" size="2">
		Contribution<br>
<br>
Contributions are always welcome, please follow these steps to submit your changes:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Install git from &lt;http://git-scm.com/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;Create a github account on &lt;https://github.com&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;Set up your git ssh key using these instructions &lt;http://help.github.com/set-up-git-redirect&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;Open the jQuery Validation Engine project home page on github on &lt;https://github.com/posabsolute/jQuery-Validation-Engine&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;Click the "Fork" button, this will get you to a new page: your own copy of the code.<br>
&nbsp;&nbsp;&nbsp;&nbsp;Copy the SSH URL at the top of the page and clone the repository on your local machine<br>
<br>
git clone git@github.com:your-username/jQuery-Validation-Engine.git my-jqv-repo<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Create a branch and switch to it<br>
<br>
cd my-jqv-repo<br>
git branch mynewfeature-patch<br>
git checkout mynewfeature-patch<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Apply your changes, then commit using a meaningful comment, that's the comment everybody will see!<br>
<br>
git add .<br>
git commit -m "Fixing issue 157, blablabla"<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Push the changes back to github (under a different branch, here myfeature-patch)<br>
<br>
git push origin mynewfeature-patch<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Open your forked repository on github at &lt;https://github.com/your-username/jQuery-Validation-Engine&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;Click "Switch Branches" and select your branch (mynewfeature-patch)<br>
&nbsp;&nbsp;&nbsp;&nbsp;Click "Pull Request"<br>
&nbsp;&nbsp;&nbsp;&nbsp;Submit your pull request to JQV Developers
		</p></font>
          </td>
        </tr>
        <tr>
          <td width="100%" bgcolor="#FFFFFF" height="24">&nbsp;</td>
        </tr>

      </table>
    </td>
  </tr>
  <tr>
    <td height="20">
      <p align="left">
    </td>
  </tr>
</table>
</div>
<p align="left">&nbsp;</p>

</body>
</html>
